有沒有辦法關閉特定網站的客戶端瀏覽器記憶體?
這是一個與瀏覽器無關的問題,但我們正在使用 IE9 進行測試。
我們的使用者訪問的 Web 應用程序之一被隨機記憶體,並且更改沒有在應有的時候顯示出來。沒有其他網站有這個問題,我們已經與聲稱沒有發生在其他任何人身上的供應商合作。如果我們使用開發人員工具欄並選擇“從伺服器強制刷新”,一切都會正確更新。
我們的想法不是真正解決問題,而是通過禁用此特定站點的記憶體來解決它。但是,我們不知道如何。
**禁用瀏覽器記憶體的唯一正確方法是通過 webapp 本身的 HTTP 標頭。**對於任何 2000 年後的瀏覽器,僅 HTTP 1.1“Cache-Control”標頭就足夠了。但是為了提供額外的保護,伺服器可以同時發出HTTP 1.1 “Cache-Control” 和 HTTP 1.0 “Expires” 標頭。
一種 hack’ish 但有時會看到的處理記憶體失效的方法是來自伺服器的 URL 中的“cachebuster”字元串。cachebuster 通常是基於時間戳的,並作為查詢字元串添加到每個 HTML LINK 以使 URL 唯一且僅使用一次。類似的東西
http://example.org/filename.html?cb=<timestamp+random_value>
。這很醜陋,並且沒有做任何 HTTP 標頭做得更好的事情。但它可以用作有限受眾(Intranet 上的 fx)的 hack,或者與適當的 HTTP 標頭一起用作額外的保護層。AFAIK 無法 僅從Internet Explorer中選擇性地禁用*單個站點的記憶體。*一個(非常複雜的)解決方案可能是將Varnish 記憶體安裝為 LAN 上的中間記憶體,將 Internet Explorer 設置為使用 Varnish 作為 HTTP 代理,並在 Varnish 上使用 VCL 語言僅為該特定站點重寫 HTTP 標頭。
**老實說,我認為您的供應商在這裡犯了一個錯誤。**我建議為 IE 安裝 Fiddler2或為 Firefox 安裝 Firebug,並查看 webapp 發送的實際 HTTP 標頭。將其與我已經連結到上面的 Mark Nottingham 的記憶體教程相關聯——我猜標題允許記憶體,或者至少不明確禁止記憶體。