使用沙发和沙发应用程序的分析计数器
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 请求并在服务器端执行您需要的任何操作,例如将相关信息插入您的分析数据库。
祝你好运!
【讨论】:
以上是关于使用沙发和沙发应用程序的分析计数器的主要内容,如果未能解决你的问题,请参考以下文章