我正在处理一个案例,需要使用复杂的页面浏览量。
每个内容对象都有页面视图,这应该很容易访问,以便我们可以做与之相关的各种事情(按照目录结果,显示,计算流行的metter ...)。最接近的等效项是youtube视频的视图。
我正在考虑实现这个的一些可行方法:
使用注释存储& indexer创建portal_catalog索引&元数据。
仅使用索引器(使用volatile属性或基于先前索引更新索引),这样我们就不必两次编写频繁更改的数据。页面视图仅存储在对象脑中。
使用关系数据库。那么我们如何才能使用portal_catalog?
在Plone之前使用包装层进行分析并通过某些API获取所需数据。这种简洁的灵活性,但有助于减少Plone方面的大量工作(写事件订阅者,检查会话,cookie ...),性能应该更好?
您的想法/经验?
答案 0 :(得分:3)
我们已将外部日志分析器用于客户端项目(大型专用Intranet)。架构:
页面计数很简单,只需在数据库中查询正确的UID即可。排名表并不难;查询统计信息,然后使用UID将目录数据附加到结果集。
我们现在面临的最大问题是缺乏数据仓库技术(将数据库中的各个访问行转换为高效聚合),我们正在考虑重新设置此设置以使用Piwik作为统计引擎代替。
我们不能在这种特殊情况下使用Google Analytics,但如果您没有这样的限制,我当然会建议您查看collective.googleanalytics并查看是否可以使其适合您的使用案例。
答案 1 :(得分:2)
您是否已经看过这款产品? : http://plone.org/products/collective.googleanalytics/
它似乎符合您的需求,或者至少它可以成为您自定义的良好基础。
答案 2 :(得分:2)
对每个访问进行写入是ZODB的最坏情况。关系数据库通常都非常擅长这种事情,我先看看它。
需要对数据进行排序吗?只需添加一些实用程序或内容类型方法即可查询数据库。当您需要查找时,请执行目录搜索,然后使用db-connecting方法注释要排序的数据。
答案 3 :(得分:1)
我们很久以前就做过这个(plone2.5)。客户想要这个!一旦完成,它终于不是真正的需要。这是首选的文章,它不等于观看次数最多...所以内容评级就是那个。
首先与您的客户进行验证。
接下来,实现您需求的最佳方式是安装分析工具,googleanalytics或其他任何东西,但使用API来询问查看次数最多的页面。如果您需要在portal_catalog中进行此操作,则可以在查看文章时仅对每小时编制索引值。
答案 4 :(得分:1)
我注意到来自Nidelven的人刚刚发布了http://plone.org/products/Products.ZODBFriendlyCounter,它承诺在没有过多的ZODB写入/膨胀的情况下本地执行此操作。值得一试,希望听到更多关于此的专家意见。
答案 5 :(得分:0)
如果你使用灵巧,你应该自定义一个综合浏览行为,将annotoatin数据添加到主对象,注释日期使用volatile属性。