Ajax实现对静态页面的文章访问统计功能示例


Posted in PHP onOctober 10, 2016

本文实例讲述了Ajax实现对静态页面的文章访问统计功能。分享给大家供大家参考,具体如下:

众所周知,静态页面不仅速度快,而且对seo也有一定的帮助。前些日子,写了一帖关于《在SAE平台实现WordPress页面纯静态化至KVDB》。我自己使用了一段时间后,发现提速确实很明显。但是随之而来的一个问题就是,由于文章静态化后,页面并不会经过WordPress程序的处理,这样就导致了文章的访问量统计失效。当然,有一个叫做wp-postview的插件是可以解决这个问题的,但是我不是很喜欢插件,因为会拖慢整体的速度。所以这里就给出一个解决方案,就是使用Ajax来实现统计,同样是基于SAE平台的。

定义文章访问统计类

这个其实在我前面的帖子里面已经有提到过了KVDB+TaskQueue实现高效计数器,对这个做简单修改即可。由于不经过php处理,所以就不能使用队列服务来计数。同样定义计数类,并且放到网站根目录下:

$countkey=$_GET['key'];//获取要操作的计数key
if($countkey=="") exit;
if($_GET['action']=="add"){
  $cou=new counter($countkey);
  $cou->inc();//计数key对应的值加1
}elseif($_GET['action']=="get"){
  $cou=new counter($countkey);
  echo $cou->get();
}
class counter {
  private $kvdb;
  private $key;
  public function __construct($key){
    $this->kvdb=new CKvdb();
    $this->key=$key;
  }
  public function inc(){
    $num=$this->kvdb->get($this->key)+1;
    $this->kvdb->set($this->key,$num);
    return $num;
  }
  public function dec(){
    $num=$this->kvdb->get($this->key)-1;
    $this->kvdb->set($this->key,$num);
    return $num;
  }
  public function get(){
    $num=$this->kvdb->get($this->key);
    return intval($num);
  }
}
class CKvdb //这个类封装的kvdb操作。
{
  private $db;
  function __construct(){
    $this->db=new SaeKv();
    $this->db->init();
  }
  public function set($key,$value)
  {
    $this->db->set($key,$value);
  }
  public function get($key)
  {
    return $this->db->get($key);
  }
}

添加计数代码

在你的文章内容页面,添加如下的Ajax请求代码,该代码是基于jQuery的:

var keyTemp = $('#postTemp').text();
$.get('http://localhost/counter.php',{ action:'add',key:keyTemp });
$.get('http://localhost/counter.php',{ action:'get',key:keyTemp },function(data){
    $('#view').text(data+' Views');
});

keyTemp变量就是文章的别名,即存入KVDB中的键。我把该健存到一个隐藏的div身上,然后在使用Ajax的时候去获取该div的内容。Ajax中第一个get就是去访问counter.php计数类,并且带上参数,实现访问加1. 第二个get就是取访问值了,把取到的值放到相应的地方中去。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php学习 字符串课件
Jun 15 PHP
mac下使用brew配置环境的步骤分享
May 23 PHP
php URL跳转代码 减少外链
Jun 25 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
PHP使用函数用法详解
Sep 30 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 #PHP
PHP对象链式操作实现原理分析
Oct 09 #PHP
SAE实时日志接口SDK用法示例
Oct 09 #PHP
对PHP依赖注入的理解实例分析
Oct 09 #PHP
mac下多个php版本快速切换的方法
Oct 09 #PHP
Laravel中间件实现原理详解
Oct 09 #PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 #PHP
You might like
漂亮但不安全的CTB
2006/10/09 PHP
给php新手谈谈我的学习心得
2007/02/25 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
python绘制双柱形图代码实例
2017/12/14 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
结构工程个人自荐信范文
2013/11/30 职场文书
单位人事专员介绍信
2014/01/11 职场文书
董事长助理岗位职责
2014/02/18 职场文书
大学运动会入场词
2014/02/22 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
全陪导游词
2015/02/04 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
对学校的意见和建议
2015/06/04 职场文书
在职证明格式样本
2015/06/15 职场文书
《确定位置》教学反思
2016/02/18 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
tomcat下部署jenkins的方法
2022/05/06 Servers