2008-11-03 30 views
2

我正在開發一個頁面視圖計數器來跟蹤頁面在我們網站上的顯示量並將其顯示給用戶。 (我之前問過一個簡介問題:Page View Counter like on StackOverFlow)。頁面查看計數器 - 數據庫設置和技術/策略

使用的建議,我公司開發出的HttpHandler將處理請求每當這個被炒魷魚關:

<link rel="stylesheet" href="cn.axd?t=1&id=232" type="text/css" /> 
  1. 只是想知道如果最終用戶將 需要等待的請求被 完成處理之後纔可以 查看/與頁面進行交互。

  2. 會是更好的選擇是執行一個異步隊列,其中信息被記錄到一個MS隊列,並最終經由(例外策略)

  3. 難道是慢登錄在數據庫中檢查是否一個特定的記錄存在( PageID)並增加計數器或將記錄插入數據庫,並在需要時進行聚合。我們只需在本週末運行彙總即可查看特定頁面在一週內獲得的總瀏覽量。

謝謝大家。

回答

0

有趣的問題!與許多其他性能優化問題一樣,有一些權衡。

  1. 可能。在IMG href =「」中加載這個處理程序可能是一個更好的主意,將大小設置爲0,以便用戶不可見。

  2. 如果負載很重,這將是更可取的,這樣您的處理程序可以在排隊操作後立即返回。然而,對於大多數負載,運行一個簡單的T-SQL查詢來增加計數器可能同樣快。

  3. 在您的T-SQL查詢中直接爲值添加+1可能是最好的,「count = count + 1」等。這將很快運行,並且會導致後續檢索數據而不聚合。

希望這有助於!

Adam Adam

+0

謝謝亞當。只是想知道,爲什麼會使用鏈接(即CSS)標籤來處理他們的頁面計數器? – TimLeung 2008-11-03 19:27:20

+0

這可能是一個很好的理由。根據我在頁面底部附近使用IMG標記的經驗,可以確保它不會阻止頁面顯示,但是知道某些事情的人確實有可能會有更好的理由。 – 2008-11-03 19:35:19

+0

如果你遇到它,我會對這個解釋感興趣。 – 2008-11-06 14:27:11

0

我會去在其他頁面引用的日誌記錄方法,除非你需要跟蹤具體的時間/日期的意見。我的推理僅僅是因爲您的應用程序開始擴大規模時可能獲得的絕大多數項目。

作爲CSS樣式鏈接到處理程序,不應該真正停止加載時間,但它可能會產生一些影響。

用一個簡單的插入/更新腳本,我無法想象,這樣做語句的性能開銷將是值得嘗試做一個排隊系統風格...

0

開發MQ僅僅用於跟蹤瀏覽量/點擊量聽起來有點過於複雜。

如果您擔心用戶感覺到任何延遲,爲什麼不直接從JavaScript中將XmlHttpRequest發送到您的URL?這將被異步處理。

2

在我的老公司,我們還維護了一個頁面瀏覽計數器,隨着點擊次數的增加,數據庫表格也隨之增加,從而使網站癱瘓。要實現任何方法

我提出以下建議:

  1. 執行插入所有的時間(他們比更新速度加快)。
  2. 它們是異步的,所以它不會阻塞主線程,也不會阻塞未來的請求。
  3. 有一個夜間過程,sumarizes數據和清除表中的第1點。
  4. 做你的總結數據選擇。

我們發現這是最高效和可擴展的解決方案,儘管您不會擁有實時數據。