通过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 ...
随机推荐
- 一次saltstack环境变量的坑
现场环境: salt-minion端: ip:10.0.3.149 环境:使用 nvm装的nodejs 受用nodejs自带的npm 安装pm2 sal-master端: IP:10.0 ...
- Linux内核链表-通用链表的实现
最近编程总想着参考一些有名的开源代码是如何实现的,因为要写链表就看了下linux内核中对链表的实现. 链表是一种非常常见的数据结构,特别是在动态创建相应数据结构的情况下更是如此,然而在操作系统内核中, ...
- Bootstrap+Vue.js 练习入门一
一. 效果如下图所示,输入用户名和年龄,点击添加,数据会自动添加到下面的用户信息表内.当没有数据时,用户信息表显示:暂无数据……,当有数据时,显示 删除全部 按钮,这里为了方便快捷,我没有做删除按钮的 ...
- 在控制台进行依赖注入(DI in Console)
首先我们准备两个服务接口 public interface IServiceA { void showConsole(); int GetValue(int val); } public interf ...
- python爬站长之家写一个信息搜集器
前言:不知道写什么好,绕来绕去还是写回爬虫这一块. 之前的都爬了一遍.这次爬点好用一点的网站. 0x01: 自行备好requests模块 目标站:http://tool.chinaz.com/ 0x2 ...
- html中meta标签及用法理解
自己一直想成为高级前端开发工程师,而自学.奈何最近感觉自学收效甚微,一度迷茫. 不破不立,打算改变这样的状态. 春节后上班第一天,今年打算好好实现自己的前端梦想. 重新整理.总结前端技术. 废话,就不 ...
- 关于git post-receive 钩子
登录 git服务器 进入你项目所在git文件夹 cd /var/opt/gitlab/git-data/repositories/liangyuquan/yfg.git cd hooks vim po ...
- java处理json与对象的转化 递归
整个类是一个case,总结了我在使用java处理json的时候遇到的问题,还有级联关系的对象如何遍历,json和对象之间的转换! 对于对象json转换中遇到的问题我参考了一篇博客,http://blo ...
- nginx上支持.htaccess伪静态的配置实例
本文介绍下,在nginx上配置.htaccess伪静态的方法,有需要的朋友参考下吧. 在apache上.htaccess转向,只要apache编译的时候指明支持rewrite模块即可. 但是换到ngi ...
- mac qq怎么删除全部聊天记录
找到 ./Users/user/Library/Containers/com.tencent.qq/ 删除com.tencent.qq文件夹就行.