前段时间觉得网站访问速度很慢,就用了静态缓存的插件“WP Super Cache”来加速。
用了缓存,页面变成了静态页面,速度有提升,也减轻了服务器的负荷。当然,有失必有得,你得到某些东西的同时一定在失去某些东西。速度上来了,可是问题也不少。Wp Super Cache这个插件你得不断地调试它,才能发挥它的作用。你要在缓存的内容、时间等等设置上面做测试,得到适合你网站的参数。
相关页面:WordPress静态缓存插件:WP Super Cache安装与配置优化
关键的问题是,DUX主题启用缓存后文章的计数功能失效了(实时计算的插件都会受到影响)。以前一刷新会增加阅读量,现在刷新数字不变-。-
咨询过DUX的作者,他表示没有办法(他的意思是,你看的是缓存,怎么可能增加计数)。很官方的说法,不错,大神是很忙的。
据说是因为DUX主题,计数的功能是通过WordPress的字段实现的,改起来麻烦。
没办法,自己研究了好久,总算勉强解决了问题。(有句话叫做办法总比困难多:)
具体的方法是用WP-PostViews Plus这个插件来代替DUX主题的计数功能。
WP-PostViews Plus支持缓存下的计数(通过ajax实现)。
安装插件后,在插件的编辑页面中,readme.txt里我们能看到插件的用法:
= Usage = You need edit you theme to show the post views. Add `<?php if(function_exists('the_views')) { the_views(); } ?>` to show the post views in your page.
(这里注意下,如果要插入的位置前面已经有<?php 那么不再需要输入<?php ?>)
对于计数功能,主要是首页各文章的计数和文章页面的计数。
在DUX主题中,我们需要修改的文件有2个:excerpt.php(文章摘要载入页面。大概是这个意思)、single.php(文章正文页面)。
(吐槽下,网上关于DUX主题计数代码插入的位置,完全没人提到,复制粘贴的人一大堆。这都是我自己找出来的。特别是首页计数(正确来说应该是文章摘要计数)这个文件,找了很久,之前一直以为是index.php)
编辑这2个文件,将上面的计数代码插入即可(原来DUX的计数代码去掉)。位置很好找,关注中文的地方、views就知道了。如果你真的还找不到请留言。
清除缓存,再次访问首页和文章页就看到我们修改的效果了。刷新也会继续计数!(计数的名称默认我记得是views?可以在插件的设置页面自定义的)
只是到这里还会有个小问题,就是计数数量是翻倍的,计数*2。原因应该是DUX和WP-PostViews Plus都进行了计算。这样我们就需要去修改的WP-PostViews Plus的代码(也可以修改DUX主题的计数代码,只是主题经常会更新,建议就修改插件的代码,一劳永逸)。
在计数计算那里做个处理:
打开class.wp-pvp.php文件,定位到175行,这一行的结尾可以看到+1,将+1改为+0即可!
修改后的代码为:
$post_views = (int) get_post_meta($post_ID, self::$post_meta_botviews, true) + 0;
修改完成后,再次刷新页面,计数就能正确显示了。
剩余的问题及注意的地方:
1、DUX主题的“分页无限加载页数”功能开启的话,后面加载的数据不会计数(下次闲了再研究);
2、使用了WP-PostViews Plus后,如果你删除这个插件,数据也会被删除(wp_postviews_plus、wp_postviews_plus_reflash数据表被删除)。建议停用即可;
3、关于WP Super Cache,预缓存模式缓存页面的速度非常慢,大概需要30-60分钟才能缓存几百个页面?而且缓存的速度似乎没有普通模式的快