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 win下Socket方式发邮件类
Aug 21 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
更改localhost为其他名字的方法
Feb 10 PHP
PHP中feof()函数实例测试
Aug 23 PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
Yii支持多域名cors原理的实现
Dec 05 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+ajax实现无刷新分页的方法
2014/11/04 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python各种扩展名区别点整理
2020/02/27 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
运动会广播稿500字
2014/01/28 职场文书
答谢会策划方案
2014/05/12 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
keepalived + nginx 实现高可用方案
2022/12/24 Servers