首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

手把手教你搭建个人网站八:解决配置缓存导致统计不更新的问题

Part7说到了配置缓存来提高响应速度,而缓存做的工作就是生成静态的HTML文件,避免每次都需要动态解析PHP文件,再从数据库中读取数据。但是很多主题的统计数据(文章的阅读量)又是通过PHP动态向数据库增加的,这就导致了生成静态文件后无法再统计这些数据,那么该怎么解决这个问题呢?

1.WordPress文章统计的方法

可以在当前使用主题的funtions.php中找到对应的统计方法(或者其他文件中),一般的更新流程是找到当前阅读的文章->获取到数据库中的当前阅读量->更新数据库信息。以我用的主题的统计方法为例:

function set_post_views() {$post_ID = $_POST["id"];;if ($post_ID) {$post_views = (int) get_post_meta($post_ID, 'views', true);if (!update_post_meta($post_ID, 'views', ($post_views + 1))) {add_post_meta($post_ID, 'views', 1, true);}}die;}

其中get_post_meta(),update_post_meta()和add_post_meta()都是WordPress自带的方法,用来获取以及更新对应文章相关信息的。

2.通过AJAX动态请求更新阅读量

文章页面(single.php)最下面加入如下js代码:

$(function() { $.post( ajaxurl, , null ); });

function.php中绑定这个action,用的是WordPress的add_action()方法:

add_action('wp_ajax_nopriv_single_view', 'set_post_views');add_action('wp_ajax_single_view', 'set_post_views');

其中wp_ajax_nopriv_your_action是用来获取匿名用户的请求的,而wp_ajax_your_action是用来获取登录用户的请求的,第二个参数set_post_views则是你要绑定的方法的名称。

post请求中的ajaxurl可以直接指定,也可以通过代码获取,以我的网站为例,ajaxurl对应的值是

https://www.flyzy2005.cn/wp-admin/admin-ajax.php,当然,也可以在functions.php中加入代码动态为每个页面增加一个ajaxurl的全局变量:

add_action('wp_head', 'my_ajaxurl');function my_ajaxurl() { echo '';}

至此,你已经完成了通过AJAX来更新文章的统计数据~不过对于访问静态文件的用户来说,他们对应的页面的数值并不会立马更新,等下一次缓存文件全部刷新就会是最新的阅读量~

看完本文有收获?请转发分享给更多人

关注「flyzy小站」,一同进步~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171223G0PK2K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券