通过ajax记录网站UV、PV数
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数的更多相关文章
- 网站UV,与IP、PV
什么是网站UV,与IP.PV在概念上的区别? UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客.00:00-24:00内相同的客户端只被计算一次. PV(访问量) ...
- 通过Nginx统计网站的PV、UV、IP
转载:通过Nginx统计网站的PV.UV.IP 概念 UV:独立访客:以cookie为依据,假设一台电脑装有3个不同的浏览器,分别打开同一个页面,将会产生3个UV.PV:访问量:页面每访问或刷新一次, ...
- 淘宝中的UV,PV,IPV
1. UV & PV UV: 店铺各页面的访问人数,一个用户在一天内多次访问店铺被记为一个访客(去重) ; Unique visitors PV: 店铺内所有页面的浏览总量(次数累加); p ...
- 网站性能测试PV到TPS的转换以及TPS的波动和淘宝性能测试要点
<淘宝性能测试白皮书V0.3> 性能测试的难点不在于测,在于测出的数据和实际的对照关系,以及测试出来的数据对性能的评估(到底是好,还是不好). 淘宝性能测试白皮书,解决了我的4个问题:1. ...
- Django訪问量和页面PV数统计
http://blog.csdn.net/pipisorry/article/details/47396311 以下是在模板中做一个简单的页面PV数统计.model阅读量统计.用户訪问量统计的方法 简 ...
- 通过ajax记录打印信息
润乾自带的打印直接可以通过触发js事件来进行调用.onClick="report1_print();return false;" 如果客户需要记录某个用户在某个时间段进行打印 ...
- 网站的PV,UV,IP名词解释
PV:PV 是Page Views的缩写,即页面浏览量,用户每一次对网站中的每个网页访问均被记录一次.注意,访客每刷新一次页面,pv就增加一次. UV:UV是Unique Visitor的缩写,即独立 ...
- 网站的PV UV IP---网站常见软件性能
IP,衡量不同时间段的上网人数.00:00-24:00内相同的地址被计算一次.例:日300W IP,至少300W人访问PV,衡量页面受欢迎程度.每刷新一次,被记录一次(刷pv),网站被访问的页面的数量 ...
- NGINX: 统计网站的PV、UV、独立IP
做网站的都知道,平常经常要查询下网站PV.UV等网站的访问数据,当然如果网站做了CDN的话,nginx本地的日志就没什么意义了,下面就对nginx网站的日志访问数据做下统计: 概念: UV(Uniqu ...
随机推荐
- web开发过程中关于路径问题的总结
约束: 相对路径概念-./代表当前目录.../代表上级目录 示例的所有文件都基于http://127.0.0.1:8080/test路径开放,test为对应的contextPath 前端 HTML标签 ...
- 济南清北学堂游记 Day 3.
为什么你们都说下午题简单?我反而觉得下午题难...因为上午暴力很好写啊... 第一题惊了是一道博弈论,冷静推理一大波推出了正解,就变成了结论题. 可是结论题不都是水题吗? T2是一道关于异或的题,照例 ...
- BZOJ 2419: 电阻 [高斯消元 物理]
http://www.lydsy.com/JudgeOnline/problem.php?id=2419 题意: n个点m个电阻构成一张图,求1到n的等效电阻 第一节课看一道题弃疗,于是来做这道物理题 ...
- BZOJ 2594: [Wc2006]水管局长数据加强版 [LCT kruskal]
2594: [Wc2006]水管局长数据加强版 Time Limit: 25 Sec Memory Limit: 128 MBSubmit: 2917 Solved: 918[Submit][St ...
- BZOJ 2631: tree [LCT splay区间]
2631: tree Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 3854 Solved: 1292[Submit][Status][Discus ...
- controller 单元测试
一般而言,我们写好一个模块后,会对其进行单元测试,再集成到现有的系统中. 但是呢~针对Controller.Service.Dao三层来说,我们最常的是对Service和Dao进行单元测试.然而Con ...
- 《第一行代码 android》 读书笔记:找出当前界面对应的Activity
在android开发中找出当前界面对应的Activity,步骤如下: 新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法,通过getC ...
- 计算机基础之Windows10操作系统安装U盘制作
1.第一步,下载Windows10--ISO镜像(Windows7类似),下载站点: https://msdn.itellyou.cn/(百度搜索msdn即可),个人认为这是最干净的操作系统镜像站点, ...
- 练手项目:利用pygame库编写射击游戏
本项目使用pygame模块编写了射击游戏,目的在于训练自己的Python基本功.了解中小型程序框架以及学习代码重构等.游戏具有一定的可玩性,感兴趣的可以试一下. 项目说明:出自<Python编程 ...
- php define和const的区别
1.使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数2.const用于类成员变量的定义,一经定义,不可修改.3.Define不可以用于类成员变量的定义,可用于全 ...