加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET中为命中计数器实现存储的最佳方法是什么?

发布时间:2020-12-16 06:24:32 所属栏目:asp.Net 来源:网络整理
导读:我正在创建一个点击计数器,用于跟踪访问特定页面的人数.保存此信息的表包含page_id,ip_address和timestamp(当IP地址访问页面时). 我遇到的“问题”是保存这些信息的最佳方法.如果我每次用户访问页面时都存储它,它会影响网站性能以及保存过程中可能出现的问题
我正在创建一个点击计数器,用于跟踪访问特定页面的人数.保存此信息的表包含page_id,ip_address和timestamp(当IP地址访问页面时).

我遇到的“问题”是保存这些信息的最佳方法.如果我每次用户访问页面时都存储它,它会影响网站性能以及保存过程中可能出现的问题.我希望可能在Global.asax文件中使用Application_End来在计数器表中添加记录.但是我怎么能保存这些记录呢?我是否使用Application变量?如果有,怎么样?

解决方法

which is the best way to save this information

有三种方法可以帮助不影响显示页面的性能,并且只关心您要保存哪些数据并保持自己的方式.

第一种方式

您可以使用从页面调用的处理程序作为图像,仅用于编写此统计计数器.在此处理程序中,您不使用会话,因此您甚至不会阻止其他页面.而且大多数蜘蛛都没有调用它,所以你只写真正的用户.

您可以通过以下方式将呼叫置于页面上:

<img src="keepstats.ashx?Page=CurrentPage.aspx" height="1" width="1" alt="" >

而处理程序是

// 1x1 transparent GIF
private readonly byte[] GifData = {
    0x47,0x49,0x46,0x38,0x39,0x61,0x01,0x00,0x80,0xff,0x2c,0x02,0x44,0x3b
};

public void ProcessRequest (HttpContext context) 
{
    // save here your stat counter

    // send the image
    context.Response.ContentType = "image/gif";
    context.Response.Buffer = false;
    context.Response.OutputStream.Write(GifData,GifData.Length);
}

第二种方式

要调用此函数不是来自后面的代码,而是来自页面内部,就像那样.这种情况的解除是会话锁定页面,页面必须完全加载以允许下一个请求继续.但是最容易制作.

<body>
... all the page here...


..bottom of the page..
<%
  // you send this part of the page and user all ready see it
  Response.Flush();
  // now you call the function that calculate the statistics
  // the page still show that is loading,but the user all ready see it
  CallTheStatisticSaveFunction();
%>
</body>

第三种方式

我又忘记了另一种方法,即创建一个线程,使页面中的工作并行且不可靠.

遗言

在我的代码中,我使用了上述所有技巧,一个用于统计,第二个用于必须在页面上执行但可能需要更多时间的操作.我使用该线程进行必须在开始渲染页面之前完成的操作,并使用一些技巧,如果线程没有结束,我会渲染我拥有的东西.

我将避免会话以了解用户是否已准备好看到该页面的原因:

>如果用户不使用cookie,则会话不起作用,并且所有蜘蛛都不使用会话
>如果用户开始看到很多页面,会话数据将会增长.

当您关闭iis或停止应用程序时,Application_End仅被调用.每次都是全局和调用的点是Application_BeginRequest,但是你会影响性能,因为每个asp.net元素都会调用它,你需要检查它是否是一个页面,如果是其他东西,那么这个是第一点.页面,你会有延迟.我们在这里搜索如何在用户看到内容后最后编写统计信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读