1

实际上,我需要计算特定文档的访问者数量。

我可以通过添加一个字段并增加它的值来做到这一点。

但是问题来了,

我在不同的位置有 10 个复制副本。它正在按计划的方式进行复制。因此,由于文档计数正在不同位置编辑同一文档,因此发生了复制冲突。

4

4 回答 4

3

我会为此使用外部解决方案。只需在您喜欢的搜索引擎中搜索“访问者计数”并选择第三方工具即可。然后,如果这很重要,您可以在页面上显示计数。

如果您出于某种原因需要将值存储在数据库中,也许您可​​以将其存储为每次添加(并在以后清理)的新文档类型以避免复制问题。

否则,如果不需要存储它,也可以考虑使用 Google Analytics。

于 2012-06-13T11:42:55.460 回答
1

我也遇到了这个问题。我不能说它有一个简单的解决方案。文档锁定是我找到的唯一解决方案。但是访客的计数是不可能的。

于 2012-06-13T04:39:15.770 回答
0

这是可能的,但不是通过更新文档。而是对代理或表单进行 AJAX 调用,并在 URL 上使用参数来标识正在读取的文档。此调用将文档写入具有一个或两个视图的跟踪数据库,然后从这些视图中确定您有多少读取。读取次数是 AJAX 表单的返回值。

这可以用 LS、Java 或 @Formulas 编写。我会尝试在@Formulas 中做到 100% 以使其尽可能高效。

您还可以添加逻辑以排除来自同一用户或同一源 IP 地址的读取。

然后,跟踪数据库使用与其他数据库相同的计划进行复制。

每日或每小时代理可以运行以创建摘要文档并删除详细文档,这样您就不会超出 @DBLookup 的限制。

如果您不需要非常接近实时的计数(这是使用这样的复制系统可以获得的最佳结果),您可以使用多米诺生成的 Web 日志,方法是在日志中查找读取并在每个服务器的文档中构建计数.

/新人

于 2012-06-13T14:03:53.723 回答
0

早在 90 年代,我们有一个客户需要知道每个人在没有点击签名或其他任何内容的情况下阅读了一份文件。

最初的解决方案是将每个名称添加到单独跟踪文档的文本字段中。当它真正快速超过 32k 时遇到了问题。然后,我的一位同事意识到你可以让它为每个用户创建一个文档来记录他们阅读过的内容。

哎呀,您可以使用一个数据库来跟踪所有用户对所有文档的所有读取,因为一个用户一次只能打开一个文档——每次他们打开一个新文档时,要么将该值添加到一个字段或创建一个以他们在自己的“读者跟踪器”文档上阅读的文档命名的字段。

或者你可以把它做成一个邮寄数据库,这样就不用担心复制了。每次他们打开您要跟踪读取的文档时,它都会创建一个小文档,其中只有他们的姓名和他们阅读的文档,这些文档被邮寄到“阅读计数器数据库”。如果您不关心谁阅读了它,您可以使用一个按计划运行的代理来更新计数并删除邮寄的文档。

真的有很多方法可以给这只猫剥皮。

于 2012-06-13T20:46:46.997 回答