【问题标题】:ASP.NET - Storing Article View Count in DatabaseASP.NET - 在数据库中存储文章查看计数
【发布时间】:2013-01-12 03:01:03
【问题描述】:

我正在构建一个 Wiki / Blog 类似的应用程序,并且我有一个关于存储每篇文章的查看计数的最佳方法的问题。要求是我只想存储查看文章的唯一用户数,而不是总查看次数。到目前为止,我想出了 3 种不同的方法来完成:

1. SQL Server 存储过程: 这种方式的问题是数据是以XML 数据类型存储的,使用这种方式实现需求可能有点复杂。我把它作为最后的手段。

2。 MSMQ: 这会很好用,因为我可以串行处理请求。这种方法的唯一问题是,我无法确保 MSMQ 安装在主机服务器上。这个是不可能的!

3.使用Application.Lock() 我知道使用这种方法可以锁定对Application 对象的访问,更新应用程序中的某些条目,更新数据库,然后调用Application.Unlock()。虽然这听起来是一种实用的方法,但它仍然是一种解决方法。

有没有人对我应该怎么做才能达到要求有什么建议?

【问题讨论】:

  • 这不是网络日志/分析的用途吗?
  • 你为什么不使用谷歌分析?
  • 您将博客条目存储在数据库中的什么位置?只需添加一个字段并相应地更新。对你的问题感到困惑。
  • 要求存储在数据库中。问题是 Count 将与其他数据块一起存储在 Xml 字段中,我担心多个请求会同时进入并相互覆盖。
  • [互相覆盖]不会发生

标签: c# asp.net sql-server msmq


【解决方案1】:

MsMQ 和 Application.Lock 绝对不是您想做的简单事情要考虑的选项。 (Application.Lock() 是一个 def NO GO)

我也认为没有理由使用 XML。存储过程不依赖 XML

创建一个表 [页面,用户名]

在页面的每个视图上

insert into <table>(page,userip) values(@page,@userip)

对于统计信息,只需发出查询

select count(*) from <table> group by userip having page=@page

这会在其 IP 上识别用户,而不是完全故障保护,因为多个用户可以来自同一个 IP。

但是为什么不调查一下谷歌分析呢?您需要的所有信息(以及更多信息)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-14
    • 2014-06-05
    • 2012-03-02
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多