2011-09-04 148 views
4

我們最近開始使用新的CMS解決方案。然而,我們並沒有意識到,默認情況下,這個解決方案不會向HTML頁面添加無緩存頭等。遠程清除IE緩存

雖然我們現在已經解決了這個問題,但使用IE瀏覽器的訪問者尤其擁有大量HTML頁面的緩存(包括對舊CSS和JS文件的引用)。

在上線後的第一個月內訪問該網站的用戶是否存在緩存清除方法?由於我擔心我們無法成功地推進我們的設計和JS功能,因爲擁有舊緩存版本的用戶。

+0

任何特定版本或全部? –

+0

我至少關心IE7和8 – isNaN1247

回答

3

請求頁面通常返回一個Last-Modified標題?這是破解我有任何經驗的緩存的唯一可靠方法。

大多數瀏覽器會發送If-Unmodified-Since請求標頭,如果他們正在緩存某些內容(除非此CMS上的默認緩存行爲是設置顯式緩存過期日期,這將非常不尋常)。因此,您所要做的就是在響應中發出Last-Modified:[date you added no-cache headers]標頭,並且正確運行的HTTP服務器將向客戶端發送完整更新的HTML頁面。

Correct format can be found in the HTTP protocol.

+0

雖然不完全是我的問題,但它確實讓我思考 - 我發現我的問題是我的'Cache-Control'頭部被設置爲'no-cache'......問題是我們的辦公室(以及我們的大部分客戶端)都在代理之後 - 我只是改變了'Cache控制'到'私人,最大年齡= 0'。我們還將'Expires'設爲'-1'。 – isNaN1247

1

假設有一箇中央URL生成函數,請跟蹤它並始終將?_version=2(或&_version=2,如果URL中有問號)追加到所有URL。

這對您的Web應用程序沒有任何影響(除非它使用_version GET字段),而是模擬更改的URL所有鏈接的資源。由於始終會請求初始URL(例如,/),這將使任何瀏覽器重新下載所有資源。

+1

雖然這種蕭條可以用於CSS和JS等文件,但如果每次請求都重新下載HTML。 IE(我已經測試過6-8)似乎沒有重新請求它已經緩存的HTML。也許它是一個'後臺代理'問題,但我已經知道IE緩存像Jon Skeet的大腦 - 所以我想它更多的是一個瀏覽器問題 – isNaN1247

+0

PS - 也嘗試了IIS重寫規則 - 追加查詢字符串。但是因爲瀏覽器沒有重新請求URL的標題,所以它沒有看到'Location'標題做一個重定向。 PS - 如果你的URL使用查詢參數 - 一定要更新Google/Bing網站管理員工具,以便它們不會列出你的查詢字符串附加的URL :) – isNaN1247