2009-09-26 49 views
0

想象一下,您的Web應用程序爲一個或多個頁面維護一個計數器,並且它還積極地爲匿名訪問者緩存這些頁面。這就造成了這樣一個問題,即對於那些訪問者來說,至少hitcount會過期,因爲儘管hitcounter在服務器上被準確地維護,即使對於這些訪問者,他們也會在一段時間內看到舊的緩存頁面。使用非持久性Http Cookie將帶外數據傳送到瀏覽器

如果服務器將繼續爲緩存頁面提供服務,但會將更新後的計數器傳遞到非持久性http cookie中,以便通過頁面中的一段JavaScript讀取將更新計數器注入DOM的內容。

意見?

+0

如果有人已經禁用了Cookie ......非持久性cookie甚至會通過嗎? – Toad

+0

不確定。但即使它們不是負面影響,也僅限於看到過時的點擊數是正確的? –

+0

確實如此,但前提是JavaScript代碼中有一個默認值,如果無法找到cookie,則顯示 – Toad

回答

1

你永遠不會以這種方式跟蹤訪問者。如果您積極地緩存頁面,中間代理和瀏覽器也將緩存您的頁面。因此,請求可能無法訪問您的服務器以供您跟蹤。

這樣做的最好方法是使用類似於谷歌分析的方法。加載頁面時,向服務器發送AJAX請求。此ajax請求會增加服務器上的當前計數器值,並返回最新值。然後客戶端可以使用javascript顯示服務器返回的值。

這種方法可以讓你像你想要的那樣積極緩存,而不會失去追蹤訪問者的能力。

+0

是的,我認爲這可能是最好的解決方案。 –

0

你也可以通過asp或php以編程方式獲取頁面,並自己替換hitcounter。

+0

你的意思是將一些智能(可能非常有缺陷)的正則表達式魔術應用於緩存的內容? –

+0

正則表達式看起來有點過頭了。如果需要替換的文本被定義爲:%% COUNTER %%,那麼您可以只做一個簡單的搜索和替換。 – Toad

+0

但是這仍然會給服務器帶來負擔。更換一個字符串應該是閃電般的,但它仍然在服務器上工作。 –