zoukankan      html  css  js  c++  java
  • 用户点击数量统计

    在微信上做一次推广活动,页面共计三个按钮,需要分别统计点击次数,pc上的相关统计用的是“百度统计”,因为H5活动页的时效性等原因,并没有使用百度统计,而是自己实现一个简单的统计小方案:前端点击时请求一个空白小gif图,带有参数,后端同事根据nginx请求日志做统计,通过在cookie中存入一个不会重叠的时间戳作为key值来区分是否同一用户(uv)。

    请求的图片存在七牛中,是固定不变的,主要变化是后面两个参数:用户标识uid和按钮标识,其中生成不重复(把重复率降到最低)的用户标识很有意思,可参考这篇文章

    时间戳用new Date().getTime()得出一个13位的“随机数”,精确到毫秒,但万一同一毫秒有两个以上用户点击呢?于是再严谨一些,用for循环在随机一个5位字符串拼接,这样的重复率绝对够用:

    uid = new Date().getTime();
    var randomNumber = '';
    for(var i = 0 ; i < 5 ; i ++){
        randomNumber += new String (Math.floor(Math.random() * 10));
    }
    uid = uid + randomNumber;

    下面是具体逻辑代码,当网页中已有请求图片时,更改url的参数也一样能从新发起一个get请求,避免每次点击都append一张图片。这种实现方法感觉比点击发送ajax更加方便。

    statistics: function(position){
        var pic = "http://wx.daigj.com/notification/statistics/p.gif";
        var uid = util.readCookie("uid");
        var imgLength = $("#statistics-img").length;
        if(uid){
            if(imgLength == 0){
                $('body').append('<img id="statistics-img" src="' + pic + '?uid='+ uid + '&position='+ position +'"/>');
            }else{
                $("#statistics-img").attr("src",pic+"?uid="+uid+"&position="+position);
            }
        }else{
            uid = new Date().getTime();
            var randomNumber = '';
            for(var i = 0 ; i < 5 ; i ++){
                randomNumber += new String (Math.floor(Math.random() * 10));
            }
            uid = uid + randomNumber;
            util.createCookie("uid",uid);
            $('body').append('<img id="statistics-img" src="' + pic + '?uid='+ uid + '&position='+ position +'"/>');
        }
    }
  • 相关阅读:
    Byteart Retail V3 全新的面向.NET与领域驱动设计的企业应用实践案例
    算法设计和数据结构学习堆排序
    OutputCacheProvider OutputCache的一点点认识
    使用beetle简单地实现高效的http基础服务
    The IoC container
    使用Visual Studio 2010进行UI自动化测试
    PortalBasic Java Web 应用开发框架 v2.6.1(源码、示例及文档)
    发展中的 CSS3
    C#数据结构与算法揭秘十
    Sql Server Profiler跟踪查询
  • 原文地址:https://www.cnblogs.com/chayangge/p/6218695.html
Copyright © 2011-2022 走看看