以前博客的页面计数器使用的是卜算子,使用方法点击这里查看,但是页面在加载的时候,并不是很快,于是自己使用Redis制作了一个简单的页面计数工具。

后台代码

我在后台使用的是Node.js,使用ioredis来对Redis进行操作,从而保存页面的访问次数。

 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
var redis = require('ioredis');
var client = new redis();
var http = require('http');
var url = require("url");

http.createServer(function (req, res) {
    var arg = url.parse(req.url, true).query;
        console.log('数据接收完毕');
        //截取url
        console.log(arg.path);
        console.log(arg.subpath);

        res.setHeader("Access-Control-Allow-Origin","*");	//允许跨域访问
        res.setHeader('Content-Type','text/html');
        res.writeHead(200, {
            "Content-Type": "text/plain;charset=utf-8"
        });
        var v="";
		//每次访问,增加在redis中存储键值
        client.incr(arg.path);
        client.incr(arg.subpath);
        //返回页面访问次数
        client.get(arg.path).then(function(result){
            client.get(arg.subpath).then(function(subreuslt){
                res.write(JSON.stringify(result));
                res.write(',');
                res.write(JSON.stringify(subreuslt));
                res.end();
            });
        });
}).listen(8000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8000/');

解析url获取其中的参数,将对应的键值该改变,并且返回技术结果。

页面代码

前端页面中,通过访问后台代码获取页面访问数量,实时获取页面访问次数。

 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
var xmlhttp;
  var url=location.href;
  var host=location.hostname;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }

      xmlhttp.open("GET","http://59.173.238.35:2222?"+"path="+host+'&'+"subpath="+url,true);   
      
      xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            result=xmlhttp.responseText;
            result=result.replace(/"/,"");
            result=result.replace(/"/,"");
            result=result.replace(/"/,"");
            result=result.replace(/"/,"");
            result=result.split(",");
            document.getElementById("busuanzi_value_site_pv").innerHTML= result[0];
            document.getElementById("busuanzi_value_page_pv").innerHTML= result[1];
        }
      }
xmlhttp.send();

使用

如果需要使用,要做的很简单:

加入脚本

在需要的页面中增加如下代码:

1
2
<script type="text/javascript" src="http://7xkswi.com1.z0.glb.clouddn.com/eclipsesv_jspvcount.js" async="async">
</script>

顺便说一下,把js或者图片等静态文件托管在七牛云存储上,可以提高页面的访问速度。

增加标签

在页面适当的位置增加标签:

1
2
3
4
5
6
<span id="busuanzi_container_site_pv">
  本站总访问量<span id="busuanzi_value_site_pv"></span>次
</span>
<span id="busuanzi_container_page_pv">
  本页总访问量<span id="busuanzi_value_page_pv"></span>次
</span>

这样,就可以愉快的使用页面计数器了。