1、通过jquery记录网站UV、PV数据

util.track = {
    log: function () {
        var referrer = util.browser.getReferrer(),
        host = window.location.host,
        pathname = window.location.pathname,
        url = window.location.href,
        title = document.title,
        type = 0,
        itemId = null;

        var detailRegex = /\/item\/(\d+)/;
        if (detailRegex.test(pathname)) {
            var result = detailRegex.exec(pathname);
            itemId = result[1];
            type = 1;

            $(".js_spec a").click(function () {
                setTimeout(function () {
                    var skuId = $("#js_skuId").val();
                    if (skuId != itemId) {
                        itemId = skuId;

                        r();
                    }
                }, 100);
            });
        }

        var r = function () {
            //alert("visit url:" + url + " title:" + title + " type:" + type);
            util.request.get("/ActionHandler.ashx", {
                referrer: url,
                url: url,
                title: title,
                type: type,
                itemId: itemId,
                visit: "visit"
            });
        };

        r();
    }
};

$(function () {
    //等待500毫秒后执行
    setTimeout(function () {
        util.track.log();
    }, 500);
})

2、后台Handler.aspx处理页面

<%@ WebHandler Language="C#" Class="ActionHandler" %>

using System;
using System.Web;

public class ActionHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
        if (context.Request["visit"] != null)
        {

            string url = context.Request["url"].ToString();
            string title = context.Request["title"].ToString();
            string referrer = context.Request["referrer"].ToString();
            string type = context.Request["type"].ToString();
            string itemId = context.Request["itemId"].ToString();
            CreateUserTracksLog(url, title, referrer, type.ToInt(0), itemId.ToInt(0));
        }
    }

    private void CreateUserTracksLog(string url, string title, string referrer, int? type, int? itemId)
    {
        ECS.Model.A_UserTracksLog log = new ECS.Model.A_UserTracksLog();
        if (HttpContext.Current.Request.Cookies == null)
        {
            return;
        }

        //if (context.Session[User_TRACK_LASTTIME] != null)
        //{
        //    var trackTime = context.Session[User_TRACK_LASTTIME].ToString().ToDateTime();
        //    if ((DateTime.Now - trackTime).Seconds < 30)
        //        return;
        //}

        //context.Session[User_TRACK_LASTTIME] = DateTime.Now;

        log.VisitToken = this.VisitToken;
        log.UserId = Utils.GetSessionUserID();
        log.IsLogin = Utils.GetSessionUserID() > 0 ? true : false;
        log.PageUrl = referrer;
        log.IP = HttpContext.Current.Request.UserHostAddress.ToString();
        log.CreateTime = DateTime.Now;

        new ECS.BLL.A_UserTracksLog().Add(log);
    }

    //访问用户令牌
    private const string UserTrackVisittoken = "visitToken";
    //访问用户令牌
    public string VisitToken
    {
        get
        {
            if (HttpContext.Current.Request.Cookies[UserTrackVisittoken] == null)
                CreateTrackCookie();

            return HttpContext.Current.Request.Cookies[UserTrackVisittoken].Value;
        }
    }

    private static void CreateTrackCookie()
    {
        HttpCookie trackCookie = new HttpCookie(UserTrackVisittoken);
        trackCookie.Value = Guid.NewGuid().ToString();
        trackCookie.Expires = DateTime.Now.AddDays(1);
        HttpContext.Current.Response.AppendCookie(trackCookie);
        HttpContext.Current.Response.Cookies.Add(trackCookie);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

通过ajax记录网站UV、PV数的更多相关文章

  1. 网站UV,与IP、PV

    什么是网站UV,与IP.PV在概念上的区别? UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客.00:00-24:00内相同的客户端只被计算一次. PV(访问量) ...

  2. 通过Nginx统计网站的PV、UV、IP

    转载:通过Nginx统计网站的PV.UV.IP 概念 UV:独立访客:以cookie为依据,假设一台电脑装有3个不同的浏览器,分别打开同一个页面,将会产生3个UV.PV:访问量:页面每访问或刷新一次, ...

  3. 淘宝中的UV,PV,IPV

    1.  UV & PV UV: 店铺各页面的访问人数,一个用户在一天内多次访问店铺被记为一个访客(去重) ; Unique visitors PV: 店铺内所有页面的浏览总量(次数累加); p ...

  4. 网站性能测试PV到TPS的转换以及TPS的波动和淘宝性能测试要点

    <淘宝性能测试白皮书V0.3> 性能测试的难点不在于测,在于测出的数据和实际的对照关系,以及测试出来的数据对性能的评估(到底是好,还是不好). 淘宝性能测试白皮书,解决了我的4个问题:1. ...

  5. Django訪问量和页面PV数统计

    http://blog.csdn.net/pipisorry/article/details/47396311 以下是在模板中做一个简单的页面PV数统计.model阅读量统计.用户訪问量统计的方法 简 ...

  6. 通过ajax记录打印信息

     润乾自带的打印直接可以通过触发js事件来进行调用.onClick="report1_print();return false;" 如果客户需要记录某个用户在某个时间段进行打印 ...

  7. 网站的PV,UV,IP名词解释

    PV:PV 是Page Views的缩写,即页面浏览量,用户每一次对网站中的每个网页访问均被记录一次.注意,访客每刷新一次页面,pv就增加一次. UV:UV是Unique Visitor的缩写,即独立 ...

  8. 网站的PV UV IP---网站常见软件性能

    IP,衡量不同时间段的上网人数.00:00-24:00内相同的地址被计算一次.例:日300W IP,至少300W人访问PV,衡量页面受欢迎程度.每刷新一次,被记录一次(刷pv),网站被访问的页面的数量 ...

  9. NGINX: 统计网站的PV、UV、独立IP

    做网站的都知道,平常经常要查询下网站PV.UV等网站的访问数据,当然如果网站做了CDN的话,nginx本地的日志就没什么意义了,下面就对nginx网站的日志访问数据做下统计: 概念: UV(Uniqu ...

随机推荐

  1. JAX-RS和Jersey

    一:JAX-RS JAX-RS是JAVA EE6 引入的一个新技术. JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照 ...

  2. ABP 数据迁移

    我主要是在项目部署的时候.当添加一个租户的时候.那么租户是有一个单独的数据库.而我的并没有用多租户单数据库. 因此我的模块里面有一个领域事件 当租户添加时将生前表生成到对应的数据库中.如果那位网友有更 ...

  3. [置换群&Polya计数]【学习笔记】

    昨天看了一下午<组合数学>最后一章然后晚上去看别人的blog发现怎么都不一样,我一定是学了假的polya 其实是一样的,只不过<组合数学>没有太多的牵扯群论.于是又从群论角度学 ...

  4. C#查询XML解决“需要命名空间管理器”问题

    在查询xml时有时会遇到带有前缀的xml,例如:"<ows:Keyword></ows:Keyword>" 这时像往常一样查询就会报错,类似于"需 ...

  5. 2017人生总结(MECE分析法)

    试着用MECE分析法对人生的整个规划做一下总结.作为技术人员,其实除了编码架构能力之外,分析问题的能力的重要程度也会随着职业发展越来越重要.<美团点评技术博客>说这几天要在黄金时段头版头条 ...

  6. VS2008集成PC-lint

    引言 C/C++语言的语法拥有其它语言所没有的灵活性,这种灵活性带来了代码效率的提升,但相应也使得代码编写具有很大的随意性,另外C/C++编译器不进行强制类型检查,也不做任何边界检查,这就增加了代码中 ...

  7. 5.C++里的4种新型类型转换

    1首先来回顾C的强制转换 大家都知道,在编译C语言中的强制转换时,编译器不会检查转换是否成功,都会编译正确. 比如: #include "stdio.h" struct Posit ...

  8. Windows Server 2016-图形化迁移FSMO角色

    上章节我们简单介绍了三种不同方式查看FSMO主机角色信息,在开篇之前我们简单回顾一下FSMO五种操作主机角色:林范围操作主机角色有两种,分别是 架构主机角色(Schema Master)和 域命名主机 ...

  9. FastStone Capture的使用

    FastStone Capture的使用 FastStone Capture是一款精简而优秀的图像处理软件,在工作中会经常用到.我在本地安装了FastStone Capture 8.4版本 (提取码: ...

  10. angularjs MVC、模块化、依赖注入详解

    一.MVC <!doctype html> <html ng-app> <head> <meta charset="utf-8"> ...