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 相关文章推荐
GD输出汉字的函数的分析
Oct 09 PHP
杏林同学录(八)
Oct 09 PHP
小偷PHP+Html+缓存
Nov 25 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
PHP代码优化技巧小结
Sep 29 PHP
PHP语法小结之基础和变量
Nov 22 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
php中的explode()函数实例介绍
Jan 18 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python动态参数用法实例分析
2015/05/25 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
高中学生评语大全
2014/04/25 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
2014年医务科工作总结
2014/12/18 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
2016年会开场白台词
2015/06/01 职场文书
车间班组长竞聘书
2015/09/15 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书