使用沙发和沙发应用程序的分析计数器

Posted

技术标签:

【中文标题】使用沙发和沙发应用程序的分析计数器【英文标题】:Analytics counter using sofa and couchApp 【发布时间】:2011-05-22 10:59:07 【问题描述】:

Couch 有一个 REST 接口。 这意味着数据更新是 PUT 调用独有的。

我正在研究实现一个不起眼的分析计数器的方法,并且遇到了 couchdb、sofa 和 couchapp 的功能——考虑到我对 javascript 的强烈要求,这些功能有点酷。

但是,大多数网络分析服务以使用请求某些资源(通常在 IMG 或 SCRIPT 标记中)进行计数更新调用结束。

有没有办法可以使用 couchApp 使用 GET 请求来执行我的计数? 这会不会是滥用 建筑学?我的意思是,并不是沙发上的所有东西都是 REST - 例如,管理部分不是。

我很高兴听到专家们的意见:)

** 已编辑 *

我刚刚注意到 CouchDB 和 Sofa 附带了 Mochiweb 网络服务器! 也许有办法让我上钩?

【问题讨论】:

哇,好酷的名字,布朗拉达加斯特。 【参考方案1】:

分叉或插件的想法

如果您是 Erlang 程序员(或者您正在寻找学习 Erlang 的新项目),那么您绝对可以编写任何您想要的作为 CouchDB 的插件/扩展的东西。我知道的最小的例子是 Die CouchDB,这是我的概念证明,它添加了一个简单地停止服务器的查询。

https://github.com/iriscouch/die_couchdb

原则上,您可以编写一个插件或 CouchDB 的分支来处理 GET 请求并对它们进行任何操作。

关于 REST 架构的注意事项

我对分析实现不是很熟悉,但 REST 和 HTTP 的重点是 GET 查询没有副作用和/或是幂等的(运行 50 个查询与运行一个没有区别)。

结果是,代理可以并且将以标准和非标准方式缓存许多 GET 响应。这似乎与用户跟踪和数据收集技术不兼容;然而,也许分析工具仍然认为收益大于成本。

对于大多数人来说,使用外部工具可能更容易。

日志思路

一个技巧是从沙发上获取任何东西,然后从沙发上检查日志条目。您可以通过以管理员身份查询 /_log 来获取沙发日志。日志将显示用户的 IP 地址、请求路径和任何查询参数。

例如

$ curl -X GET http://localhost:5984/?userid=abcde\&windowsize=1024x768\&color=blue
"couchdb":"Welcome","version":"1.1.0"

$ curl localhost:5984/_log | grep userid
[Mon, 23 May 2011 00:34:54 GMT] [info] [<0.1409.0>] 127.0.0.1 - - 'GET' /?userid=abcde&windowsize=1024x768&color=blue 200

接下来,您可以自己处理该日志条目并重新插入到您的实际分析数据库中。

包装理念

最终的解决方案是运行一个简单的反向代理,它将您的 GET 请求转换为您需要的任何内容。 NodeJS 在此类任务中越来越受欢迎,但您可以使用您喜欢的任何 Web 平台:php、ASP、JSP,无论您已经知道什么。

您只需响应 GET 请求并在服务器端执行您需要的任何操作,例如将相关信息插入您的分析数据库。

祝你好运!

【讨论】:

以上是关于使用沙发和沙发应用程序的分析计数器的主要内容,如果未能解决你的问题,请参考以下文章

Couchdb 和沙发帮助

餐厅沙发在使用时需要注意些什么问题?

Java中自定义注解

沙发应用程序不起作用! (node.couchapp.js)

坐沙发是啥意思

何谓"沙发"?