本文实例讲述了Ajax实现对静态页面的文章访问统计功能。分享给大家供大家参考,具体如下:
众所周知,静态页面不仅速度快,而且对seo也有一定的帮助。前些日子,写了一帖关于《在SAE平台实现WordPress页面纯静态化至KVDB》。我自己使用了一段时间后,发现提速确实很明显。但是随之而来的一个问题就是,由于文章静态化后,页面并不会经过WordPress程序的处理,这样就导致了文章的访问量统计失效。当然,有一个叫做wp-postview的插件是可以解决这个问题的,但是我不是很喜欢插件,因为会拖慢整体的速度。所以这里就给出一个解决方案,就是使用Ajax来实现统计,同样是基于SAE平台的。
定义文章访问统计类
这个其实在我前面的帖子里面已经有提到过了KVDB+TaskQueue实现高效计数器,对这个做简单修改即可。由于不经过php处理,所以就不能使用队列服务来计数。同样定义计数类,并且放到网站根目录下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
$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的:
1
2
3
4
5
|
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程序设计有所帮助。