我正在开发一个页面查看计数器,用于跟踪页面在我们网站上的浏览量并将其显示给用户。 (我之前问过一个介绍性问题:Page View Counter like on StackOverFlow)。
使用这些建议,我开发了一个httpHandler,只要它被解雇,它就会处理请求:
<link rel="stylesheet" href="cn.axd?t=1&id=232" type="text/css" />
只是想知道最终用户是否愿意 需要等待请求 在他们可以之前完成处理 查看/与页面互动。
更好的选择是实现异步队列,其中信息记录到MS队列并最终通过(例外策略)登录数据库
检查某条记录是否存在(PageID)并增加计数器或将记录插入数据库并在以后需要时聚合会更慢吗?我们只需要在本周末运行聚合,以查看特定页面在一周内的总浏览量。
谢谢大家。
答案 0 :(得分:2)
在我的旧公司,我们还维护了一个页面查看计数器,随着点击次数的增加,数据库表也随之下降,使网站瘫痪。
无论您采用何种方法,我都建议如下:
我们发现这是最有效和可扩展的解决方案,尽管您没有实时数据。
答案 1 :(得分:1)
可能。在IMG href =“”中加载此处理程序可能是一个更好的主意,将大小设置为0,以便用户看不到它。
在负载较重的情况下,这将是更可取的,这样您的处理程序可以在排队操作后立即返回。但是,对于大多数负载,运行简单的T-SQL查询来增加计数器的速度可能同样快。
直接在T-SQL查询中为值添加+1可能是最好的,“count = count + 1”等。这样可以快速运行并导致后续检索数据聚合
希望这有帮助!
亚当
答案 2 :(得分:0)
我会使用其他页面中引用的日志记录方法,除非您需要跟踪视图的特定时间/日期。我的理由仅仅是因为当应用程序开始按比例扩大时,您可能会收到大量的项目。
将处理程序作为CSS样式链接,不应该真正停止加载时间,但它可能会产生一些影响。
使用简单的插入/更新脚本,我无法想象执行该语句的性能开销值得尝试执行队列样式系统...
答案 3 :(得分:0)
为跟踪网页浏览/点击而开发MQ听起来有点复杂。
如果您担心用户的任何感知延迟,为什么不直接在您的URL中启动JavaScript中的XmlHttpRequest?这将被异步处理。