腾讯云服务器优惠活动华纳云香港服务器
boke112百科 » Plugins » 正文

解决WP Super Cache插件缓存文件太多没有列表可用的问题

WordPress主题推荐

Boke112导航一直在使用WP Super Cache静态缓存插件,刚开始的时候还好,可以在【内容】选项中直接点击“列出所有已缓存的文件”然后点击删除某一个文章页面的缓存文件,但是到了一定程度后,这个按钮就失效了,变成了“缓存文件太多,没有列表可用”,这个时候真不懂如何删除指定文章页面的缓存文件。经过昨天的折腾,终于把这个问题解决了,今天就跟大家分享一下。

解决WP Super Cache插件缓存文件太多没有列表可用的问题-第1张-boke112百科(boke112.com)

缓存文件太多,没有列表可用的原因分析:

经检查发现WP Super Cache插件的wp-cache.php文件对于输出缓存列表有一个条件限制,就是如果缓存文件超过500个就会改为输出“缓存文件太多,没有列表可用”,而不是输出缓存链接按钮地址。具体代码如下:

  1. elseif ( $cache_stats[ ‘supercache’ ][ ‘cached’ ] > 500 || $cache_stats[ ‘supercache’ ][ ‘expired’ ] > 500 || ( $cache_stats[ ‘wpcache’ ][ ‘cached’ ] / $divisor ) > 500 || ( $cache_stats[ ‘wpcache’ ][ ‘expired’ ] / $divisor) > 500 )

缓存文件太多,没有列表可用的解决办法:

解决WP Super Cache插件缓存文件太多没有列表可用的问题-第2张-boke112百科(boke112.com)

登录WordPress后台 – 插件 – 已安装的插件 – 找到“WP Super Cache插件”,点击【编辑】按钮 – 按键盘上的“Ctrl+F”搜索“500”,找到跟上文代码一样的地方,直接把500改为更大的数字(如5000),然后点击【更新文件】按钮即可显示已缓存文件列表。

解决WP Super Cache插件缓存文件太多没有列表可用的问题-第3张-boke112百科(boke112.com)

这个方法的好处就是修改简单,不好的地方就是缓存文件很多的情况下不好找到想要删除的那个缓存文件。其实boke112认为这款插件完全可以增加一个功能,就是可以直接删除指定文章页面的缓存文件,就跟那些CDN加速一样,可以直接输入指定网址然后刷新这个文章页面。

不知道下一次升级是否会考虑到这个方面,不过我已经迫不及待想使用这个功能了,所以只能自己折腾试试,最后终于实现了我想要的功能,也就是可以直接删除指定网址的缓存文件。

直接删除指定网址的缓存文件实现方法:

登录WordPress后台 – 插件 – 已安装的插件 – 找到“WP Super Cache插件”,点击【编辑】按钮 – 按键盘上的“Ctrl+F”搜索:

  1. <table class=“wpsc-settings-table”><td valign=‘top’>

找到之后直接在它的下方添加以下代码并点击【更新文件】按钮保存文件:

  1. <?php if($_GET[ ‘tab’ ]===’contents’){?>
  2. <form name=“wp_cache_on_post_delete” action=“” method=“post”>
  3. <h3 style=“cursor: pointer;”>输入想要删除的单个缓存地址:</h3>
  4. <input type=’text’ name=’delete_one_post’ size=’30’ value='<?php echo $_REQUEST[ ‘delete_one_post’ ];?>’ />
  5. <div class=“submit”><input id=“deleteonepost” class=“button-primary” type=“submit” value=“确认地址” /></div>
  6. </form>
  7. <?php $del_one_url =$_REQUEST[ ‘delete_one_post’ ];$delete_one_url = str_replacearray( ‘http://’, ‘https://’), ”, $_REQUEST[‘delete_one_post’] );echo “<a href='” . wp_nonce_url( add_query_arg( array( ‘delete_one_post’ => $del_one_url,’page’ => ‘wpsupercache’, ‘action’ => ‘deletewpcache’, ‘uri’ => base64_encode( $delete_one_url ) ) ),’wp-cache’ ) . “#listfiles’>先删除wpcache缓存</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='” . wp_nonce_url( add_query_arg( array( ‘page’ => ‘wpsupercache’, ‘action’ => ‘deletesupercache’, ‘uri’ => base64_encode( $delete_one_url ) ) ),’wp-cache’ ) . “#listfiles’>后删除supercache缓存</a>”;?>
  8. <?php }?>

然后我们进入到WordPress后台 – 设置 – WP Super Cache – 【内容】选项卡里面就可以看到删除指定网址缓存文件的效果图了,具体如下:

解决WP Super Cache插件缓存文件太多没有列表可用的问题-第4张-boke112百科(boke112.com)

删除指定网址缓存文件的操作步骤:

使用方法也很简单,比如我们想删除https://boke112.com/post/3650.html这个地址的缓存文件,只需要将这个地址直接粘贴到图中所示的文本框中,然后点击【确认地址】按钮,然后分别点击【先删除wpcache缓存】和【后删除supercache缓存】按钮进行删除缓存文件。

解决WP Super Cache插件缓存文件太多没有列表可用的问题-第5张-boke112百科(boke112.com)

警告

一定要严格按照:“粘贴地址确认地址 >先删除wpcache缓存 >后删除supercache缓存”这样的顺序操作才能成功。由于水平有限,所以没有对文本框的内容进行过滤筛选,所以建议想要使用这个功能的博主站长最好是按步骤操作为好。

经过boke112导航的测试,直接删除指定网址的缓存文件功能还是挺好用的,而且测试了几次都能够成功删除。换句话说,boke112导航所使用的WP Super Cache插件已经具备了直接删除指定网址的缓存文件功能。喜欢折腾的博主站长可以试试这个新功能,有更好的代码也欢迎分享告知。

16年11月18日更新:

因为我在测试的时候都是打开缓存列表后才删除指定网址的缓存文件,这个时候都是成功的,但是如果不打开缓存列表就进行操作的话,好像是无效的。至于是不是我也没有把握,因为不打开缓存列表的话,就通过查看源代码的缓存时间判断感觉不一定准确。但是如果打开缓存列表再进行删除,就可以看到缓存文件被删除成功。所以建议大家先把缓存列表中的500改成更大的数字,然后缓存文件多的情况下再增加这个删除指定网址的缓存文件功能可能会更好。

本文地址:https://boke112.com/post/3651.html

赞 (0) 打赏
版权声明:本文为原创文章,版权归 boke112百科 所有,欢迎分享本文,转载请保留出处!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请联系我们,确认后马上更正或删除,谢谢!
wu