2012-01-30 65 views
3

我期待跟蹤點擊一個網站,大多使用jQuery火點擊該添加/更新,我會登錄到內部數據庫中一個cookie錨和按鈕事件當用戶點擊一個錯誤頁面從100K用戶添加cookie時需要考慮的性能問題?

這將意味着在母版頁上(即在每個頁面上)添加一些jQuery邏輯,這些邏輯將獲取和更新cookie,並將jquery點擊事件連接到網站上的大多數對象。

現場看到大約10萬個左右,每天獨立用戶訪問量,是沉重的數據庫調用已

這是我第一次成立這樣的事到如此規模的網站。我想知道是否有專家對做這樣的事情感到擔憂,我可以預計這種解決方案會帶來什麼樣的性能開銷,任何實現的想法都會使得這對用戶和服務器來說是不可察覺的負載等

我很欣賞任何人可以給的指導。

+0

您是使用現有的cookie,還是向現有cookie添加額外信息來添加新的cookie? – cdeszaq 2012-01-30 20:24:12

+0

數據庫僅在用戶點擊錯誤頁面或所有頁面時記錄事件嗎? _do_用戶多久訪問一次錯誤頁面?後端是什麼「數據庫」? – cdeszaq 2012-01-30 20:25:04

+3

在客戶端javascript/jQuery中添加一個cookie的行爲不會佔用服務器上的任何資源,除非將來會有未來服務器請求發送的少量額外數據。你問的不止是這個嗎? – jfriend00 2012-01-30 20:25:08

回答

2

在cookie中記錄東西並不是很好的想法,因爲cookie具有文本長度的限制(如果我沒有忘記4KB)。所以如果你想記錄一些用戶活動,你可以嘗試使用ajax向服務器發送請求,並嘗試在服務器端應用一些高性能的日誌記錄系統。

+0

是4KB是最大值,但我試圖避免每次我想跟蹤這個事情時做數據庫回調的概念,目標是非常輕量級。我創建了一個cookie,它可以節省儘可能多的空間,並且不會預計最大4kb會成爲問題 – korben 2012-01-30 20:30:38

+1

cookie唯一不好的地方是這個4KB將在每個頁面請求中傳輸到服務器,它可能會產生很大的傳入流量。如果您想暫時存儲日誌,則可以在服務器端使用memcache不要進行大量數據庫調用。 – Seagull 2012-01-30 20:44:12

+0

恐怕我還沒有聽說過'memcache'ing serverside,聽起來很有趣,我會谷歌它。我的直覺問題是,這種方法意味着我需要擔心服務器的性能嗎? – korben 2012-01-30 21:11:26

0

你可以做一些負載測試。 Visual Studio has a nice implementation

沒有人能告訴你你的硬件將如何處理這類事情,所以在臨時環境中加載測試通常是你最好的選擇。如果您的登臺環境足夠相似,則應該能夠使用數量顯着較少的虛擬用戶加載測試,並查看它將在服務器上產生的影響。

2

將Cookie添加到請求的頁面加載性能命中將取決於當前的請求大小以及對每個頁面加載使用新cookie的域請求數。該cookie將被添加到每個請求(包括圖像,CSS,JS等),這取決於你的情況,它可能是一個很大的影響或小。

解決頁面加載大小問題的一種方法是將靜態資源放在與服務頁面的域不同的無Cookie域中。對無Cookie域名的請求將不包括新的cookie,因此不會受到它的影響。 (堆棧溢出完全是這樣)。

正如其他人所說,但是,使用Cookie 可能沒有跟蹤它的最好方法,因爲它確實負載上一次如此大的影響。相反,我建議你通過在用戶會話中包含相關信息來跟蹤這個服務器端。除了不以任何較大的方式增加客戶端加載時間外,您還可以處理分支流量模式,這種模式在用戶從單個頁面打開多個選項卡時經常會看到。

這確實有一個輕微的缺點,你正在服用的略高服務器端的負荷,但我會非常小心,當它涉及到增加客戶端的加載時間,因爲這是一個關鍵度量爲用戶的快樂和參與。服務器端的負載增加可以被設計,特別是對於一個10萬用戶站點。由於較慢的頁面加載而導致用戶不滿意太多難以解決。

相關問題