2011-10-11 29 views
4

我正在處理一個需要仙子複雜使用頁面視圖的情況。在Plone中計算頁面視圖的最佳方法

每個內容對象都有頁面視圖,這應該很容易訪問,以便我們可以做各種與它相關的事情(按目錄結果排序,顯示,計算流行元素...)。最接近的是YouTube視頻的視圖。

我在考慮一些可能的方式來實現這一點:

  1. 使用註釋儲存&索引創建portal_catalog指數&元數據。

  2. 僅使用索引器(使用volatile屬性或基於上一個索引更新索引),這樣我們就不必兩次寫入頻繁更改的數據。頁面視圖只存儲在對象腦中。

  3. 使用關係數據庫。那我們如何才能使它與portal_catalog一起工作呢?

  4. 在Plone之前使用包裝層進行分析並通過某些API獲取所需數據。這具有靈活性,但有助於減少Plone方面的大量工作(編寫事件訂閱者,檢查會話,cookie ......),並且性能應該更好?

您的想法/經驗?

回答

2

對每個訪問進行寫入是ZODB的最壞情況。關係數據庫通常在這類事情上非常好,我會先看看。

需要對數據進行排序嗎?只需添加一些實用程序或內容類型的方法來查詢數據庫。當您需要查找時,執行目錄搜索,然後使用db連接方法爲該排序註釋數據。

3

我們使用外部日誌分析器來處理客戶端項目(大型私有內部網)。架構:

  • 一個js庫添加了一個'網絡bug',一個空的gif與額外的查詢參數,從專用的nginx服務器加載。
  • 日誌處理器選取nginx日誌,旋轉它們,並將這些行解析到數據庫中,將訪問與附加的元數據一起計數。數據庫中的條目包括內容的UID以及其他有趣的角度。
  • 該網站擁有對同一數據庫的只讀訪問權限,可以進行統計查詢。

頁數很容易,只是查詢數據庫的正確的UID。排名榜並不難多少;查詢統計信息,然後使用UID將目錄數據附加到結果集。

我們現在面臨的最大問題是缺乏數據倉庫知識(將數據庫中的單個訪問行轉換爲有效的聚合),我們正在研究將此設置重新設置爲使用Piwik作爲統計引擎。

我們不能在這種特殊情況下使用Google Analytics,但如果您沒有這種限制,我當然會建議您查看collective.googleanalytics,看看您是否可以使其適合您的使用案例。

+0

似乎Piwik仍然在每個請求(http://dev.piwik.org/trac/ticket/134)上寫入數據庫,但它看起來非常漂亮。 –

+0

是的,但它是一個MySQL數據庫,不是ZODB,所以我不在乎。:-) –

+1

有關使用collective.googleanalytics更新內容項目受歡迎度計數的示例,請參閱(未發佈和不受支持的) http://svn.plone.org/svn/collective/collective.gapopularity/trunk。這種方法對很多內容項目不能很好地擴展,但如果你需要的只是N個最常查看的項目的列表,它可能會有所幫助。 –

1

很久以前我們已經完成了這個(plone2.5)。客戶想要這個!一旦完成,它終於不是真正的需要。這是首選的文章,它不等於最受歡迎的文章...所以內容評級是唯一的。

所以首先驗證與您的客戶。

接下來,實現您的需求的最佳方式是安裝分析工具,googleanalytics或其他任何API,以詢問查看次數最多的頁面。如果您需要在portal_catalog中使用此功能,則可以在每小時查看一篇文章時爲其索引值。

0

如果您使用靈活性,您應該自定義一個瀏覽量行爲,以便將主要數據添加到主要對象,並且註釋日期使用易失性屬性。

相關問題