现在我有一个用asp.net 2.0开发的网站
现在要求记录曾经浏览网站的IP,
我不想在网站的每一页面都放置保存浏览者IP的代码
这样太消耗资源了把有没有更好的方法??
现在要求记录曾经浏览网站的IP,
我不想在网站的每一页面都放置保存浏览者IP的代码
这样太消耗资源了把有没有更好的方法??
解决方案 »
- 弱弱的问下$get()...
- ADO.NET通用DBHelper类,自己这两天琢磨的,和大家分享下,主要是希望有高手能指点下,好让我改进!
- asp.net简单的查询系统出错啊,数据库连接不上,希望各位帮忙啊!!!急
- 不知道是为什么,VS运行就出现这个请教各位一下!
- Hashtable 绑定到CheckBoxList
- 关于一个GridView的问题
- 如何获得dataset中某个表的字段名?
- 请问一下。存储过程里的split怎么用
- 水晶报表中导出为EXECEL文件,怎么表中的字段值为"空"的字段为什么不导出?
- 如何设置IIS开机自启动?
- 用户登录的验证,对你们来说太初级了!
- 谁知道hiForums(Asp.net Forums)在哪里可以下到英文版的
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
//记录IP
}
http://www.cnblogs.com/tishifu/archive/2007/08/30/876135.html
-------
偶然看到,就说说我的看法吧。
大概半年前我就利用HttpModule做了一个流量统计的应用程序,而且是为统计服务器做的。最后因为服务负担过重(总计每秒1万以上的请求),失败了。
最后我总结了一下经验教训,觉得用HttpModule应该是可以做浏览统计的,但必须处理以下几个问题,主要是在算法上,决不是技术上。
1、必须独立统计与数据库访问。
如果想来访一个就写一次数据库,那就只有一个字:“死”,你的服器必死无疑。因此,必须重新开线程或者服务来专门写数据库。
2、必须预先处理数据再写数据库。
上面的方法是必要的,但在写数据库的时候,不能有多少写多少,必须先在内存里进行一些处理(这就是我说的很重要的地方:算法),然后再直接把结果写入数据库。例如:从一个IP得到用户来访地区,以及是否是搜索引擎上来的,以及搜索关键字是什么等等,如果每次都查询数据库再来写数据库,那也是个死。必须做一个预处理,最后直接写统计结果。
3、必须做缓存。
这一点就不用说了,所有的统计系统都有缓存,一般是缓存IP,但我觉得还应该缓存搜索引擎等。缓存分两种,一种是时间缓存,就是每长时间清一次缓存。另一种就是分量写缓存,当数据量到一定时,就清缓存。我是两个结合来用的,当IP超过3000或者时间超过30秒,就写一次数据库。
4、数据库日志要注意,这就不说了。
5、不要在数据库里临时表。这一点我不好说,但这个临时表确实让我郁闷了好久,本想用临时表来处理一些数据处理,结果带来了严重的负作用,大量的时间耗在了数据库的查询上。最后在内存里做个固定大小的类似临时表使用的临时空间来处理,效果好多了。
6、最后我觉得非常重要的就是统计算法,它有很大的优化的地方。我先后做过四五次优化,每次在性能上都有明显的提高。因此我觉得,统计算法才是核心,如果统计算法处理的好,其它的负担都可以相对减少很多。
个人想法。
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
//记录IP
}
-----------------------------------------------------
当打开一个页面的时候,页面包含类似
<SCRIPT language="Javascript" src="js/JScript.js" type="text/javascript"></SCRIPT>
这样的引用都会出触发context_BeginRequest,每一个引用就触发一次,,,
这样太消耗资源了!请问有没有办法解决????
按要求,session_start就行了吧?
--------------------
什么意思