解决WordPress开启CDN缓存后文章浏览量不自增的问题

路丁网 2020年1月22日07:13:08WordPress评论47字数 1429阅读4分45秒阅读模式

WordPress开启CDN静态缓存页面之后,当我们访问文章的时候,便不会去请求源站,而是返回CDN缓存了的页面,所以文章的浏览数量不会进行自增以及其他的变化。

解决WordPress开启CDN缓存后文章浏览量不自增的问题
解决WordPress开启CDN缓存后文章浏览量不自增的问题

解决办法

解决这个问题,我们可以通过Ajax来异步请求服务器,然后再进行文章的浏览数量自增或其他的操作。(注:本方法仅适用于使用了WP-PostViews插件或者和具有WP-PostViews相同字段的博客,若你的文章统计字段不同,可自行修改下方SQL语句以达到效果)
首先,我们在网站的根目录新建一个操作文件,命名为views.php,将以下代码写入此文件中。
根据@张戈博主提供的建议与信息,将浏览量记录操作做了过滤以及部分优化,但是由于在服务器端进行验证的话如果不使用Redis等缓存,操作量以及存储的Cookie数据可能会比较多,于是我换了一种方式来进行验证过滤(JavaScript部分),代码如下:

 require('../../wp-blog-header.php');
 $isXhr = $_SERVER['HTTP_X_REQUESTED_WITH'];
 if (strtoupper($isXhr) == strtoupper("XMLHttpRequest")) {
 $post_id = $_POST['post_id'];
 $po = get_post_meta($post_id,'views',true);
 if(!$po) {
 //表示不存在这个自定义栏目,那么新增这个自定义栏目
 add_post_meta($post_id, 'views', 1, true);
 echo 1;
 } else {
 // 若已存在这个自定义栏目,则先获取当前数值,并递增+1,再更新数据库
 $count = $po + 1;
 update_post_meta($post_id,'views',$count);
 echo $count;
 }
 } else {
 header("Status: 403 Not Found");
 exit;
 }

接着我们在主题的page.php文件中插入以下代码:

$(function(){
 function page_views() {
 if(!window.localStorage) {
 console.info('浏览器不支持localStorage');
 }else{
 var post_id = <?php the_ID();?>;
 var views = localStorage.getItem("view_list");
 if(views===null){
 localStorage.setItem("view_list",post_id);
 $.post("/views.php?time="+new Date().getTime(),{post_id:post_id});
 return true;
 }else{
 var item = views.split("|");
 var bool = $.inArray(post_id+'',item);
 if(bool===-1){
 $.post("/views.php?time="+new Date().getTime(),{post_id:post_id});
 localStorage.setItem("view_list",views+"|"+post_id);
 return true;
 }
 return false;
 }
 
 }
 }
 page_views();
});

到这一步,就已经成功解决了这个问题。

  • 本文由 发表于 2020年1月22日07:13:08
2020创业好项目排行榜(农村创业50个项目) WordPress

2020创业好项目排行榜(农村创业50个项目)

[ 路丁前言 ] 自主创业好的投资项目有很多,说到冷门暴利制造行业,禁不住令人想起成本低高收益,坐享井喷式机遇,有一大把的银两赚……那麼,你了解2019年冷门暴利的小本创业项目有什么吗?接下去,十叁就...
WordPress配置Memcached缓存教程(无需代码) WordPress

WordPress配置Memcached缓存教程(无需代码)

很多人都知道WordPress可以通过缓存来提高网站加载速度,其实除了WordPress本身可以缓存外,我们还可以在服务器上来使用对象缓存来加速网站,在本文中我们为大家带来WordPress配置Mem...
WordPress更换主题,你需要注意哪些事情 WordPress

WordPress更换主题,你需要注意哪些事情

在WordPress中,虽然更换主题这个功能是一件非常简单的事情,只需要点几个下就能切换,不过对于我们的WordPress站点来说,却并不是一件小事,因为许多东西包括外观、功能、使用方法等都有可能发生...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定