最新公告
  • 欢迎光临爱下载,本站专业为站长提供各种资源。立即加入我们
  • RiPRO6.6搭配极致主题优化缓存攻略,非插件实现memcache缓存

    RiPRO6.6搭配极致主题优化缓存攻略,非插件实现memcache缓存

    2020-4-30 主题美化 爱下载 关注310次 该资源永久SVIP免费 去升级
    售后服务: 自动发货 使用说明 安装指导 环境配置 二次开发 BUG修复
  • 商品介绍
  • 评价建议
  • 使用道具:memcache

    没有道具的请直接略过该文章,不懂一点基础的请略过该文章,按文章操作所引起的后果,本人不负责。。。。

    其实我也蒙逼了很久,因为主题后台打开了缓存,但是没有效果。

    看了很多文章,也研究了下主题,发型油条童鞋的CaoCache使用的是WordPress自带缓存File-Based Object Caching

    但奇怪的是竟然没有效果,开启以后sql查询依然是那么多。

    然后我就琢磨替换方案:memcache缓存,有人会问为啥不用redis,悄悄的说,尝试过,失败了。。。。

    至于为啥不用缓存插件,总感觉插件是全局缓存,那样会缓存一些我不需要缓存的数据,像油条在风格里面预留的缓存都安排的很好,我需要完全的兼容他所设置的缓存。

    好吧,言归正传 ,开始说怎么安排,先来张效果图:

    还剩下11条sql请求,离油条的2条差距比较大,是因为子主题中觉得有些必要的就没加缓存。

    开始干活:

    1、先下载附件,将wp-includes/下的cache.php放根目录或者备份到本地然后删除。ps:既然没用,要它何用,直接换了。

    2、换上附件内的cache.php,刷新几次网页,查看你的sql请求数,没降低可以把我剁了。

    3、这时候你发现请求数虽然降低了,但是依然还是有那么20多条,剩下的就看你怎么优化子风格了。

    以站壳网提供的极致子主题为参考,因为我也是用的这个。

    1、优化导航缓存,原主题油条是有加导航缓存的,但是极致没有,直接参考油条的代码

    打开文件jizhi-chlid\parts\navbar.php,拉到最下面,找到代码:

                    <?php wp_nav_menu( array(
                        'container' => false,
                        'fallback_cb' => 'Cao_Walker_Nav_Menu::fallback',
                        'menu_class' => 'nav-list u-plain-list',
                        'theme_location' => 'menu-1',
                        'walker' => new Cao_Walker_Nav_Menu( true ),
                    ) ); ?>
    

     

    替换成:

                   <?php 
                    ///////////S CACHE ////////////////
                      if (CaoCache::is()) {
                          $_the_cache_key = 'ripro_all_navbar_menu';
                          $_the_cache_data = CaoCache::get($_the_cache_key);
                          if(false === $_the_cache_data ){
                              $_the_cache_data = wp_nav_menu( array(
                              'container' => false,
                              'fallback_cb' => 'Cao_Walker_Nav_Menu::fallback',
                              'menu_class' => 'nav-list u-plain-list',
                              'theme_location' => 'menu-1',
                              'echo' => false,
                              'walker' => new Cao_Walker_Nav_Menu( true ),
                            ) );  //缓存数据
                              CaoCache::set($_the_cache_key,$_the_cache_data);
                          }
                          $ripro_nav = $_the_cache_data;
                      }else{
                          $ripro_nav =  wp_nav_menu( array(
                              'container' => false,
                              'fallback_cb' => 'Cao_Walker_Nav_Menu::fallback',
                              'menu_class' => 'nav-list u-plain-list',
                              'theme_location' => 'menu-1',
                              'echo' => false,
                              'walker' => new Cao_Walker_Nav_Menu( true ),
                         ) ); //原始输出
                      }
                  
                  ///////////S CACHE ////////////////
                    echo $ripro_nav;
                    ?>
    

     

    打开文件:jizhi-chlid/functions.php

    找到代码:

    // 每周更新的文章数量
    function get_week_post_count(){
    $date_query = array(
    array(
    'after'=>'1 week ago'
    )
    );$args = array(
    'post_type' => 'post',
    'post_status'=>'publish',
    'date_query' => $date_query,
    'no_found_rows' => true,
    'suppress_filters' => true,
    'fields'=>'ids',
    'posts_per_page'=>-1
    );
    $query = new WP_Query( $args );
    echo $query->post_count;
    }
    

     

    替换成:

    // 每周更新的文章数量
    function get_week_post_count(){
        $date_query = array(
            array(
                'after'=>'1 week ago'
            )
        );$args = array(
            'post_type' => 'post',
            'post_status'=>'publish',
            'date_query' => $date_query,
            'no_found_rows' => true,
            'suppress_filters' => true,
            'fields'=>'ids',
            'posts_per_page'=>-1
        );
        if (CaoCache::is()) {
    	    $_the_cache_key = 'get_week_post_count_a';
    	    $_the_cache_data = CaoCache::get($_the_cache_key);
    	    if(false === $_the_cache_data ){
    	        $_the_cache_data = new WP_Query($args); //缓存数据
    	        CaoCache::set($_the_cache_key,$_the_cache_data);
    	    }
    	    $query = $_the_cache_data;
    	}else{
    	    $query = new WP_Query($args); //原始输出
    	}
        return $query->post_count;
    }
    

     

    继续,找到代码:

    // 每日更新的文章数量
    function WeeklyUpdate() {
    $today = getdate();
    $query = new WP_Query( 'year=' . $today["year"] . '&monthnum=' . $today["mon"] . '&day=' . $today["mday"]);
    $postsNumber = $query->found_posts;
    echo $postsNumber;
    }
    
    

     

    替换成:

    // 每日更新的文章数量
    function WeeklyUpdate() {
        $today = getdate();
            if (CaoCache::is()) {
    	    $_the_cache_key = 'WeeklyUpdate';
    	    $_the_cache_data = CaoCache::get($_the_cache_key);
    	    if(false === $_the_cache_data ){
    	        $_the_cache_data = new WP_Query('year=' . $today["year"] . '&monthnum=' . $today["mon"] . '&day=' . $today["mday"]); //缓存数据
    	        CaoCache::set($_the_cache_key,$_the_cache_data);
    	    }
    	    $query = $_the_cache_data;
    	}else{
    	    $query = new WP_Query('year=' . $today["year"] . '&monthnum=' . $today["mon"] . '&day=' . $today["mday"]); //原始输出
    	}
    $postsNumber = $query->found_posts;
    echo $postsNumber;
    }
    

     

    接着,在下面添加:

    //查询注册总用户数量
    function user_count_index(){
        global $wpdb;
        if (CaoCache::is()) {
             
             $_the_cache_key = 'user_count_index';
    	    $_the_cache_data = CaoCache::get($_the_cache_key);
    	    if(false === $_the_cache_data){
    	        $_the_cache_data =  $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users"); 
    	        CaoCache::set($_the_cache_key,$_the_cache_data,600);
    	    }
    	    $users = $_the_cache_data;
        }else{
            $users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users"); 
        }
         
         echo $users;
    }
    //总资源数量
    function published_posts_index(){
        if (CaoCache::is()) {
             
             $_the_cache_key = 'published_posts_index';
    	    $_the_cache_data = CaoCache::get($_the_cache_key);
    	    if(false === $_the_cache_data){
    	        $count_posts = wp_count_posts();
    	        $_the_cache_data = $count_posts->publish;
    	        CaoCache::set($_the_cache_key,$_the_cache_data);
    	    }
    	    $published_posts = $_the_cache_data;
        }else{
            $count_posts = wp_count_posts();
    	    $published_posts = $count_posts->publish;
        }
        echo $published_posts;
    }
    

     

    为什么要加这两段,接下来你们就知道了。

    找到文件:jizhi-chlid\parts\home-mode\census.php

    第二行、第三行代码

    $count_posts = wp_count_posts(); 
    $users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users"); 
    

     

    删除!

    继续,往下面拉

    找到代码

    <div class="announce-wrap">
    <ul class="announce-list line" style="margin-top: 0px;">
    <?php
    	$post_num = 5; // 显示文章的数量.
    	$args=array(
    	'post_status' => 'publish',
    	'paged' => $paged,
    	'caller_get_posts' => 1,
    	'posts_per_page' => $post_num
    	);
    	query_posts($args);
    	// 主循环
    	if ( have_posts() ) : while ( have_posts() ) : the_post();
    ?>
    <li><a href="<?php%20the_permalink();%20?>" target="_blank"><?php the_title(); ?></a><span><?php echo the_time('Y-m-d')?></span></li>
    <?php endwhile; else: endif; wp_reset_query();?>
    </ul>
    </div>
    

     

    替换成:

    <div class="announce-wrap">
    <ul class="announce-list line" style="margin-top: 0px;">
    <?php
    	$args = array(
    	    'ignore_sticky_posts' => true,
    	    'post_status'         => 'publish',
    	    'posts_per_page'      => 5,
    	    'orderby'      => "DESC",
    	);
    
    	///////////S CACHE ////////////////
    	if (CaoCache::is()) {
    	    $_the_cache_key = 'ripro_home_catpost_posts_census';
    	    $_the_cache_data = CaoCache::get($_the_cache_key);
    	    //print_r($_the_cache_data);
    	    if(false === $_the_cache_data ){
    	        $_the_cache_data = new WP_Query($args); //缓存数据
    	        CaoCache::set($_the_cache_key,$_the_cache_data);
    	    }
    	    $data = $_the_cache_data;
    	}else{
    	    $data = new WP_Query($args); //原始输出
    	}
    	if ( $data->have_posts() ) : while ( $data->have_posts() ) : $data->the_post();
    ?>
    <li><a href="<?php%20the_permalink();%20?>" target="_blank"><?php the_title(); ?></a><span><?php echo the_time('Y-m-d')?></span></li>
    <?php endwhile; else: endif; wp_reset_query();?>
    </ul>
    </div>
    

     

    继续,往下面拉,找到代码:

    <em id="num4"><?php $users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users"); echo $users; ?></em></div>
    

     

    替换成:

    <em id="num4"><?php echo user_count_index();?></em></div>
    

     

    找到代码:

    <em id="num3"><?php echo $published_posts = $count_posts->publish;?></em></div>
    

     

    替换成:

    <em id="num3"><?php echo published_posts_index();?></em></div>
    

     

    接下来,打开文件:jizhi-chlid/footer.php

    找到代码:

    <li><i class="fa fa-group"></i><strong data-count="97596" class="active"><?php $users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users"); echo $users; ?></strong><span>会员总数(位)</span>
    

     

    替换成:

    <li><i class="fa fa-group"></i><strong data-count="97596" class="active"><?php echo user_count_index();?></strong><span>会员总数(位)</span>
    

     

    找到代码:

    <li><i class="fa fa-chrome"></i><strong data-count="34774" class="active"><?php $count_posts = wp_count_posts(); echo $published_posts = $count_posts->publish;?></strong><span>资源总数(个)</span>
            </li>
    

     

    替换成:

    <li><i class="fa fa-chrome"></i><strong data-count="34774" class="active"><?php echo published_posts_index();?></strong><span>资源总数(个)</span>
            </li>
    

     

    这几步,也就是把2个地方的查询会员总数,查询文章总数,都放入了functions.php中,一下子就减少了4条sql查询

    接下来如果觉得还有什么地方需要缓存,可以在jizhi-chlid/footer.php加入代码:

     if (current_user_can('administrator')){
    global $wpdb;
     echo "<pre>";
     print_r($wpdb->queries);
     echo "</pre>";
     }
    

     

    作为管理员的你,可以在网站底部看见所有sql查询,把觉得可以缓存的都设置下缓存。缓存默认过期时间是3600秒,也就是1小时,注册用户数量缓存600秒。

    接下来可能你会有个疑惑,那如果我想要马上清理缓存,刷新数据咋办呢?

    答案是:好说,没得问题

    在文件jizhi-chlid/footer.php中加入代码

     if (current_user_can('administrator')&& (!empty($_GET["ql"])&& $_GET["ql"] == "123456"){
        $mem = new Memcache;
        $mem->connect('127.0.0.1','11211');
        $mem->flush();
     }
    
    

     

    将123456换成个你喜欢的,访问域名/?ql=123456,即可清理所有缓存!

    完结,撒花!

    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服![email protected]
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!

    爱下载 » RiPRO6.6搭配极致主题优化缓存攻略,非插件实现memcache缓存

    发表评论

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过200元的模板免费一次安装,需提供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email:[[email protected]]),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系作者
    • 193会员总数(位)
    • 9286资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 962稳定运行(天)

    专业服务中小型站长,提供定制、设计、开发三位一体服务

    开通会员 了解详情