2008-09-11 77 views
2

如果服務器上的時鐘超前於客戶端的時鐘,下面的代碼是否會工作?網頁緩存setexpires

Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)) 

編輯:我想問的原因是在我們的網站之一Apps還有的用戶聲稱他們看到從以前使用該設備的用戶的頁面(賬號等)。然而,我們使用上面的行和其他行來防止這種情況發生。

+0

我鏈接的問題並非所有瀏覽器都遵守HTTP Cache指令,因此他們應該這樣做,這就是爲什麼您需要設置多個屬性以確保頁面永遠不會被緩存。如果你想使用日期,爲什麼不選擇過去的固定日期,而不是1秒前。 – 2008-09-11 19:33:42

回答

3

This question包括確保網頁沒有被緩存。看起來您必須設置多個屬性才能確保所有瀏覽器都不緩存網頁。

+0

是的,我明白了,我們確實按照我只是想知道情況是否會發生。 Response.Cache.SetNoStore()Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache)Response.AddHeader(「Pragma」,「No-Cache」)'告訴代理服務器不要緩存頁面。 Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)) – osp70 2008-09-11 19:31:56

+0

如果您正在使用的用戶已經點擊了後退按鈕,該怎麼辦?我曾在很多應用程序中看到過,瀏覽器不會往返於服務器,而是從緩存中取出所有內容(甚至英國的一些網上銀行機構也可以這樣做)。它可能是一隻紅鯡魚嗎? – Mauro 2008-09-11 22:50:42

0

您的問題可能是由瀏覽器記住輸入表單域的數據引起的。您可以關閉此功能是這樣的:

<input autocomplete="off"> 
0

據我所知道的,瀏覽器會檢查對本地時鐘失效日期(儘管它佔的時區),所以你的問題的代碼如果客戶的時鐘不準確,可能無法按預期工作。最常見的情況是,當他們的時間看起來正確但設置爲錯誤的時區時,這意味着UTC時間戳實際上超出了幾個小時。

你可以嘗試設置一個更古老的時間戳,說:0000 1970年1月1日GMT(時代)

我覺得你的代碼都應該與服務器端緩存工作,但你可以更明確地禁用它:

Response.Cache.SetNoServerCaching();