现在我有一个用asp.net 2.0开发的网站
现在要求记录曾经浏览网站的IP,
我不想在网站的每一页面都放置保存浏览者IP的代码
这样太消耗资源了把有没有更好的方法??

解决方案 »

  1.   


    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
    }
      

  2.   

    看了有些不知怎么做好
    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、最后我觉得非常重要的就是统计算法,它有很大的优化的地方。我先后做过四五次优化,每次在性能上都有明显的提高。因此我觉得,统计算法才是核心,如果统计算法处理的好,其它的负担都可以相对减少很多。 
    个人想法。 
      

  3.   

    用IHttpModule
    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,每一个引用就触发一次,,,
    这样太消耗资源了!请问有没有办法解决????
      

  4.   

    按要求,session_start就行了吧?
      

  5.   

    yc123456 
    按要求,session_start就行了吧?
    --------------------
    什么意思