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 相关文章推荐
数字转英文
Dec 06 PHP
PHP自定义函数收代码
Aug 01 PHP
PHP中::、->、self、$this几种操作符的区别介绍
Apr 24 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
Jul 05 PHP
PHP屏蔽过滤指定关键字的方法
Nov 03 PHP
php中curl使用指南
Feb 05 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
Symfony2创建页面实例详解
Mar 18 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
微信自定义分享php代码分析
Nov 24 PHP
PHP实现文件上传功能实例代码
May 18 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
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
php面向对象重点知识分享
2019/09/27 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Django组件content-type使用方法详解
2019/07/19 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
J2EE面试题
2016/03/14 面试题
优秀体育委员自荐书
2014/01/31 职场文书
销售人员自我评价
2014/02/01 职场文书
总经理任命书范本
2014/06/05 职场文书
中秋晚会策划方案
2014/06/12 职场文书
2014年少先队工作总结
2014/12/03 职场文书
长江三峡导游词
2015/01/31 职场文书
社会实践单位意见
2015/06/05 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android