咱們如何在全部瀏覽器中控制網頁緩存?

咱們的調查代表,並不是全部瀏覽器都以統一的方式遵照HTTP緩存指令。 node

出於安全緣由,咱們不但願Web瀏覽器永遠緩存應用程序中的某些頁面。 這必須至少適用於如下瀏覽器: web

  • Internet Explorer 6+
  • Firefox 1.5以上
  • Safari 3+
  • 歌劇9+

咱們的要求來自安全測試。 從咱們的網站註銷後,您能夠按返回按鈕並查看緩存的頁面。 chrome


#1樓

我發現web.config路由頗有用(試圖將其添加到答案中,但彷佛未被接受,所以在此處發佈) express

<configuration>
<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
            <!-- HTTP 1.1. -->
            <add name="Pragma" value="no-cache" />
            <!-- HTTP 1.0. -->
            <add name="Expires" value="0" />
            <!-- Proxies. -->
        </customHeaders>
    </httpProtocol>
</system.webServer>

這是express / node.js的相同方法: 瀏覽器

app.use(function(req, res, next) {
    res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
    res.setHeader('Pragma', 'no-cache');
    res.setHeader('Expires', '0');
    next();
});

#2樓

若是您遇到IE6-IE8經過SSL和MS Office文件使用cache:no-cache標頭(和相似值)的下載問題,則可使用cache:private,no-store標頭並在POST請求時返回文件。 有用。 緩存


#3樓

//In .net MVC
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult FareListInfo(long id)
{
}

// In .net webform
<%@ OutputCache NoStore="true" Duration="0" VaryByParam="*" %>

#4樓

IE6中有一個錯誤 安全

即便使用「 Cache-Control:no-cache」,也會始終緩存帶有「 Content-Encoding:gzip」的內容。 app

http://support.microsoft.com/kb/321722 ide

您能夠爲IE6用戶禁用gzip壓縮(檢查用戶代理中的「 MSIE 6」) 測試


#5樓

就我而言,我用這個解決了chrome的問題

<form id="form1" runat="server" autocomplete="off">

因爲安全緣由,當用戶單擊「後退」按鈕時,我須要清除先前表單數據的內容

相關文章
相關標籤/搜索