修正PostViews插件加入CDN静态缓存后计数不正常问题

前期在 固定链接格式的改进节省页面载入时间的方法   https://www.iappi.cn/2019_05/2019658.html 有过记录当时为了节约waiting ttfb时间,将固定链接的格式设置成.html,并且做了APACHE服务器伪静态。从而使得CDN缓存了静态的html页面后,大大的缩短了载入的时间。但同时也带来了一个问题,就是PostViews这个用来记录点击量的插件在此之后,计数一直不正常的问题。

图1.后台查看views非常之少

这是因为 PostViews 插件默认的情况下使用 PHP 的方式计数,而不是使用 ajax 计数。当PostViews使用 PHP 方式计数时,只有在回源访问网站的的时候 PostViews 插件才会计数一次,而本站这次在百度云CDN上设置的是html是缓存超过1天,这也是为什么PostViews 插件计数非常少的的原因。因为只有超过了缓存的时间,CDN才会去源站读取,插件才会计数一次。而其他情况下,CDN不回源,计数器就永远不会加1,无论有多少个访问。另外简单解释下ajax,Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),无需浏览器安装插件,只要允许JavaScript在浏览器中运行即可。

网上也找了相关的一些解决方案,但要求是开启PostViews插件的Use AJAX To Update Views 的选项,选择yes后保存即可。但实际上到后台并没有看到相应的选项:

图2.PostViews插件的设置

后来又找了一些解决方案,发现是因为这个Use AJAX To Update Views选项的开启,需要WordPress安装了某些缓存插件后,PostViews 插件才会自动识别出来,就是先决的条件是WP_CACHE 开启缓存应该为true,而不是没有。这样的话,需要在站点的根目录WordPress下找到wp-config.php,在wp-config.php中添加如下代码,并保存。

define("WP_CACHE", true);

图3.在wp-config.php添加缓存开启代码

这时候再到后台打开PostViews 插件的设置页面,发现Use AJAX To Update Views选项已经出现了,这时候修改为Yes,并保存。

图4.开启Use AJAX To Update Views选项

这时候再刷新站点中的文章页面,打开F12开发者选项,在network选项卡中,可以看到admin-ajax.php文件已经加载成功了,这时候说明修改已经生效,PostViews 插件开启了ajax计数模式。

图5.开发者选项admin-ajax.php已加载

刷新一下,可以看到后台计数已经+1。当然因为CDN缓存了html静态文件的原因,前台页面显示的数目依然没有变化的。前后台还是有一定的差距的,这就需要CDN的缓存刷新来解决了。

图6.后台显示RUFUS.小巧的U盘启动盘制作工具的计数
图7.前台显示RUFUS.小巧的U盘启动盘制作工具