質問

当社の調査を示していることのないすべてのブラウザを尊重し、httpキャッシュディレクティブ制服ます。

セキュリティ上の理由によりしないように特定のページにアプリケーションは、キャッシュ ウェブブラウザです。このなければならないですね。少なくとも以下のブラウザ:

  • Internet Explorer6+
  • Firefox1.5+
  • Safari3+
  • Opera9+
  • クローム

当社の要件にしたセキュリティテストです。ログイン後から当社のウェブサイトがプレスのバックボタンやビューキャッシュされたページ。

役に立ちましたか?

解決

導入

の最小セットのヘッダが作品の全ての顧客は、プロキシ):

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

Cache-Control は、HTTP1.1の仕様お客様および代理人(暗黙のうちに必要なお客様次 Expires).の Pragma は、HTTP1.0仕様のための先史時代。の Expires は、HTTP1.0、1.1の仕様お客様および代理人.HTTP1.1では、 Cache-Control ものの方が優先され Expires, この後、すべてのHTTP1.0プロキシのみです。

いつIE6とその壊れたキャッシュがけページHTTPS通信のみ no-store, そ省略 Cache-Control: no-cache.

Cache-Control: no-store, must-revalidate
Pragma: no-cache
Expires: 0

いつIE6もHTTP1.0(HTTP1.1導入された1997年、そこを省略 Pragma.

Cache-Control: no-store, must-revalidate
Expires: 0

ない場合は気HTTP1.0プロキシはその省略 Expires.

Cache-Control: no-store, must-revalidate

一方の場合、サーバーを含む有効な Date ヘッダは、その理論を省略 Cache-Control もな Expires だけます。

Date: Wed, 24 Aug 2016 18:32:02 GMT
Expires: 0

その失敗する場合があり例のenduserを操作業システム日付、クライアントソフトウェアに依存します。

その他 Cache-Control パラメータなど max-age 関係していない場合は、上記の Cache-Control パラメータを指定します。の Last-Modified ヘッダとして含む他のほとんどの回答はこちら のみ 興味深いの場合 実際にい キャッシュを要求だけを指定する必要があります。

設定方法です。

PHPを利用した:

header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.

Javaを利用してサーブレット、またはNode.js:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.

をASP.ネMVC

Response.Cache.SetCacheability(HttpCacheability.NoCache);  // HTTP 1.1.
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.

を使用ASP.NET Web API:

// `response` is an instance of System.Net.Http.HttpResponseMessage
response.Headers.CacheControl = new CacheControlHeaderValue
{
    NoCache = true,
    NoStore = true,
    MustRevalidate = true
};
response.Headers.Pragma.ParseAdd("no-cache");
// We can't use `response.Content.Headers.Expires` directly
// since it allows only `DateTimeOffset?` values.
response.Content?.Headers.TryAddWithoutValidation("Expires", 0.ToString()); 

を使用ASP.NET:

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.

をASP:

Response.addHeader "Cache-Control", "no-cache, no-store, must-revalidate" ' HTTP 1.1.
Response.addHeader "Pragma", "no-cache" ' HTTP 1.0.
Response.addHeader "Expires", "0" ' Proxies.

をRuby on Rails、Python/フラスコ:

headers["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
headers["Pragma"] = "no-cache" # HTTP 1.0.
headers["Expires"] = "0" # Proxies.

Python/Django:

response["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
response["Pragma"] = "no-cache" # HTTP 1.0.
response["Expires"] = "0" # Proxies.

Pythonを使用した/ピラミッド:

request.response.headerlist.extend(
    (
        ('Cache-Control', 'no-cache, no-store, must-revalidate'),
        ('Pragma', 'no-cache'),
        ('Expires', '0')
    )
)

を行:

responseWriter.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") // HTTP 1.1.
responseWriter.Header().Set("Pragma", "no-cache") // HTTP 1.0.
responseWriter.Header().Set("Expires", "0") // Proxies.

Apacheの使用 .htaccess ファイル:

<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>

使用HTML4:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

HTMLメタタグvs HTTP応答ヘッダを

を知ることが重要であることがHTMLページでは以HTTP接続、およびヘッダが存在 HTTP応答ヘッダのHTML <meta http-equiv> タグの指定されたHTTP応答ヘッダの取得が優先HTMLのmetaタグです。HTMLのmetaタグを使用しているときにページからローカルディスクにファイルシステムを介して file:// ます。参照 W3HTML仕様章5.2.2.注意このときに指定しないプログラムでは、ウェブサーバーでつなど一部のデフォルト値です。

一般的には、きっと新しい発見があると思い直 ない 指定したHTMLタグの混同を避けるゼに依存するハードにHTTP応答ヘッダを含みます。また、特に、 <meta http-equiv> タグ 無効 HTML5.のみ http-equiv 値を記載 HTML5の仕様 を許可する。

検証実際のHTTP応答ヘッダを

確認のため、その他ご覧/デバッグしHTTPでの交通モニターのブラウザの開発者のパワフルなツールセットです。きを押して、F12ム/Firefox23+/IE9+を開き、"ネットワーク"または"ネット"のタブパネルをクリックし、次にそのHTTPリクエストの発掘すべての詳細は、HTTP要求に応じます。の 以下の画面 ですからChrome:

Chrome developer toolset HTTP traffic monitor showing HTTP response headers on stackoverflow.com

たい設定方にヘッダファイルもダウンロード

まず、この問いに答えは"webページ(HTMLページがあるので、"ファイルをダウンロード"(PDF、zip、Excelです。きっと新しい発見があると思いいキャッシュに格納および使用のファイルバージョン識別子かのURIのパスはquerystringをredownloadに変更ファイルです。申請時の方にno-cacheヘッダファイルのダウンロードがとにかく、そのことに留意してくださいIE7/8バグがサービスを提供するファイルをダウンロードHTTPS通信ではなくHTTP.詳細は、 IEをダウンロードできなfoo.当財団.IEませんでしたがこのインターネットサイトです。要求されたサイトは利用不可できなか.

他のヒント

(こんにちはみ:ただ不mindlesslyコピー&ペーストされたすべてのヘッダまで)

最初に "戻る"ボタン履歴 なキャッシュ:

の鮮度モデル(4.2節)必ずしも歴史のメカニズム。ることで、履歴機構を表示できる以前の表現を備えている場合であっても終了しました。

のHTTPスペックの文言をいっそう強固になり、明示的に語ウェブブラウザーを無視しキャッシュのためのディレクバックボタンの歴史。

戻っ帰時に時間をユーザー ログインします。なデータベースに以前に開いた。

しかしながら、実際には、キャッシュの影響を与えることができ[戻る]ボタンを非常に特定の状況:

  • ページ 必要 すると HTTPS,そうでない場合、このキャッシュの秀逸さんです。プラスであれば、使用しないHTTPS、そのページでは、脆弱性問題に適切に対処ログインを盗む多くすることはいたしません。
  • 郵送してください Cache-Control: no-store, must-revalidate (一部のブラウザでの観察 no-store 一部の観察 must-revalidate)

ない 必要の

  • <meta> ャッシュヘッダー—動作していません。まったく役に立たないので
  • post-check/pre-check —ではIEのみ指令のみを適用 cachable 資源です。
  • 送信じヘッダーや、ダース部品です。一部のPHPスニペットが実際に置き換え前のヘッダーは、昨れ送信されます。

したい場合は、追加:

  • no-cache または max-age=0, しながら、リソース(URL)"無効"が必要ブラウザのチェックの場合にはサーバが新しいバージョン(no-store ていることをもっと強く).
  • Expires 日付のためのHTTP/1.0クライアが HTTP/1.0のみのお客様は全く存在しないこととなります

ボーナス: 新HTTPキャッシュRFC.

としてporneL述べたいものではない無効化するには、キャッシュが無効化するには、履歴バッファです。異なるブラウザにおい微妙な方法を無効にするには履歴バッファです。

クロム(v28.0になります。1500.95円)ることができまみ Cache-Control: no-store.

FireFox(v23.0になります。1)これらのいずれかの事業:

  1. Cache-Control: no-store

  2. Cache-Control: no-cache (httpsみ)

  3. Pragma: no-cache (httpsみ)

  4. Vary: * (httpsみ)

オペラ(v12.15)ただけることができる Cache-Control: must-revalidate (httpsのみ)。

Safari(v5.1.7日7534.57.2)これらのいずれかの事業:

  1. Cache-Control: no-store
    <body onunload=""> htmlにおける

  2. Cache-Control: no-store (httpsみ)

にIE8(v8.0になります。6001.18702IC)これらのいずれかの事業:

  1. Cache-Control: must-revalidate, max-age=0

  2. Cache-Control: no-cache

  3. Cache-Control: no-store

  4. Cache-Control: must-revalidate
    Expires: 0

  5. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT

  6. Pragma: no-cache (httpsみ)

  7. Vary: * (httpsみ)

組み合わせの上ならこちらのソリューション作品のためのChrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15: Cache-Control: no-store, must-revalidate (httpsみ)

このhttpsでのオペラな話履歴バッファの平httpます。ができませんのでhttpsまたは作成を無視するオペラのまなければならないことです:

Cache-Control: no-store
<body onunload="">

以下のように原ログの試験:

HTTP:

  1. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:オペラ12.15
    成功:Chrome28日、FireFox23日、IE8、Safari5.1.7

  2. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:オペラ12.15
    成功:Chrome28日、FireFox23日、IE8、Safari5.1.7

  3. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    失敗す:Safari5.1.7、オペラ12.15
    成功:Chrome28日、FireFox23日、IE8

  4. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    失敗す:Safari5.1.7、オペラ12.15
    成功:Chrome28日、FireFox23日、IE8

  5. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  6. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  7. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  8. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  9. Cache-Control: no-store
    失敗す:Safari5.1.7、オペラ12.15
    成功:Chrome28日、FireFox23日、IE8

  10. Cache-Control: no-store
    <body onunload="">
    失敗す:オペラ12.15
    成功:Chrome28日、FireFox23日、IE8、Safari5.1.7

  11. Cache-Control: no-cache
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  12. Vary: *
    失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
    成功:なし

  13. Pragma: no-cache
    失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
    成功:なし

  14. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  15. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  16. Cache-Control: must-revalidate, max-age=0
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  17. Cache-Control: must-revalidate
    Expires: 0
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  18. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
    成功:IE8

  19. Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
    成功:なし

HTTPS:

  1. Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    <body onunload="">
    失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
    成功:なし

  2. Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    <body onunload="">
    失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
    成功:なし

  3. Vary: *
    失敗す:Chrome28日、Safari5.1.7、オペラ12.15
    成功:FireFox23日、IE8

  4. Pragma: no-cache
    失敗す:Chrome28日、Safari5.1.7、オペラ12.15
    成功:FireFox23日、IE8

  5. Cache-Control: no-cache
    失敗す:Chrome28日、Safari5.1.7、オペラ12.15
    成功:FireFox23日、IE8

  6. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    失敗す:Chrome28日、Safari5.1.7、オペラ12.15
    成功:FireFox23日、IE8

  7. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    失敗す:Chrome28日、Safari5.1.7、オペラ12.15
    成功:FireFox23日、IE8

  8. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    失敗す:Chrome28日、Safari5.1.7、オペラ12.15
    成功:FireFox23日、IE8

  9. Cache-Control: must-revalidate
    失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7
    成功:オペラ12.15

  10. Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
    <body onunload="">
    失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7
    成功:オペラ12.15

  11. Cache-Control: must-revalidate, max-age=0
    失敗す:Chrome28日、FireFox23、Safari5.1.7
    成功:IE8、オペラ12.15

  12. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、Safari5.1.7
    成功:FireFox23日、IE8、オペラ12.15

  13. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:Chrome28日、Safari5.1.7
    成功:FireFox23日、IE8、オペラ12.15

  14. Cache-Control: no-store
    失敗す:オペラ12.15
    成功:Chrome28日、FireFox23日、IE8、Safari5.1.7

  15. Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:オペラ12.15
    成功:Chrome28日、FireFox23日、IE8、Safari5.1.7

  16. Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    失敗す:オペラ12.15
    成功:Chrome28日、FireFox23日、IE8、Safari5.1.7

  17. Cache-Control: private, no-cache
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    失敗す:Chrome28日、Safari5.1.7、オペラ12.15
    成功:FireFox23日、IE8

  18. Cache-Control: must-revalidate
    Expires: 0
    失敗す:Chrome28日、FireFox23、Safari5.1.7,
    成功:IE8、オペラ12.15

  19. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    失敗す:Chrome28日、FireFox23、Safari5.1.7,
    成功:IE8、オペラ12.15

  20. Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7,
    成功:IE8、オペラ12.15

  21. Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    <body onunload="">
    失敗す:Chrome28日、FireFox23、Safari5.1.7,
    成功:IE8、オペラ12.15

  22. Cache-Control: private, must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    失敗す:Chrome28日、Safari5.1.7
    成功:FireFox23日、IE8、オペラ12.15

  23. Cache-Control: no-store, must-revalidate
    失敗す:なし
    成功:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15

私は見つかります。configルート有(たところにある答えがないように同意したものとさせていたのでここに掲載)

<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>

こちらはエクスプレス/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();
});

これらのすべての答えをこのページもあった。特にこなしてまとめられるというメリットIE8をキャッシュ版のページのときにアクセスで打ちのボタンを押します。

研究-試験することを見いだし,その二つのヘッダといった:

Cache-Control:no-store
り:*

についての説明はヘッダ、チェックアウト http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6

にIE6-8のFF1.5-3.5、クロムの2、3、Safari4、オペラ9-10、これらのヘッダのページを要求するサーバーからをクリックすると、次のようにへのリンクはページのURLに直接アドレスバーがあります。ることにつ 99% のすべてのブラウザとして多く使われているのJan'10.

にIE6、オペラ9-10、打戻る]ボタンを未だによるキャッシュされたバージョンロードされます。すべての他のブラウザではそれぞれのフェッチ新鮮なバージョン、サーバーにコピーします。こんな設定のヘッダを起こすような方はブラウザに戻らないキャッシュされたバージョンのページをう場合がございますのでご注意下のボタンを押します。

更新: 書いた後にこの答えは、そのウェブサーバは特定としてのHTTPサーバー1.0.のヘッダん掲載されているの正しいものにするための対応からのHTTPサーバー1.0でないキャッシュによるブラウザを推奨いたします。HTTP1.1サーバーを見BalusCの 答え.

後のビットを研究した以下の一覧のヘッダを見ているとほとんどのブラウザ:

にASP.NET 追加し、これらを以下のスニペット:

Response.ClearHeaders(); 
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0 
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.0 

なかった: http://forums.asp.net/t/1013531.aspx

の利用にpragmaヘッダーの対応は妻物語.RFC2616に限定してリクエストヘッダ

http://www.mnot.net/cache_docs/#PRAGMA

免責事項:として読み@BalusCの答えです。読込後、以下のキャッシュチュートリアル: http://www.mnot.net/cache_docs/ (質問の中から、いくつか選んで読んでみたいもの)だと思います。しかし、歴史的な理由で起こっていかれん)、また独自の回答。


また'可'回答のPHPない作業でした。そのた研究はほとんどが若干異体から試作まで。ここでは:

header('Cache-Control: no-store, private, no-cache, must-revalidate');     // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);  // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                  // Date in the past  
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header ('Pragma: no-cache');

るべきます。けれども、問題なのは、ここを設定する場合の同じ部分をヘッダを回る場合、 false 送信されないとして二つ目の引数のヘッダー機能で、ヘッダー機能を上書きしてください前 header() ます。なので、設定する場合には、 Cache-Control, 例えばだいたいすべての引数を一つ header() 関数呼び出しなければならないようになります:

header('Cache-Control: this');
header('Cache-Control: and, this', false);

詳しくは完全に文書化 こちらの.

があるバグを修正IE6

コンテンツとContent-Encoding:gzip"を常にキャッシュを使用している場合でも"Cache-Control:no-cache".

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

無数の組み合わせで自分だけのgzip圧縮IE6ユーザー(チェックインのユーザエージェントのための"行6")

のためのASP.NET コア、簡単なミドルウェアクラス:

public class NoCacheMiddleware
{
    private readonly RequestDelegate m_next;

    public NoCacheMiddleware( RequestDelegate next )
    {
        m_next = next;
    }

    public async Task Invoke( HttpContext httpContext )
    {
        httpContext.Response.OnStarting( ( state ) =>
        {
            // ref: http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers
            httpContext.Response.Headers.Append( "Cache-Control", "no-cache, no-store, must-revalidate" );
            httpContext.Response.Headers.Append( "Pragma", "no-cache" );
            httpContext.Response.Headers.Append( "Expires", "0" );
            return Task.FromResult( 0 );
        }, null );

        await m_next.Invoke( httpContext );
    }
}

その後に登録し Startup.cs

app.UseMiddleware<NoCacheMiddleware>();

ただくにあたりのどこかに後

app.UseStaticFiles();

をRFC HTTP1.1 によると、適切な方法を追加するにはHTTPヘッダ:

Cache-Control:no-cache

古いブラウザがこれを無視していない場合、適切に対応HTTP1.1.の方に体験してみましょうヘッダ:

Pragma:no-cache

これはもう作業のためのHTTP1.1ブラウザを推奨いたします。

これらのディレクティブな緩和するセキュリティリスクです。彼らは本当に力のUAのリフレッシュ揮発性情報、保UAのかを保持す。見 この類似の問題.したがって、少なくともしないという保証はありません他のルーター、代理人等今を無視してはいけないのキャッシュする指令です。

一方、政策に関する物理的アクセス、コンピュータ、ソフトウェアのインストールの手にマイル)先の企業規りましたのでお知らせいたしますの場合は消費者がこれらの情報の公開だけでもいちわかることのできる情報のヒットチューニングされたエンジンは、その機 その 責任せん。

設定の変更httpヘッダの一日1995年に通常のリックを達成しています。

次に例を示します。

Expires: Wed, 15 Nov 1995 04:58:08 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Cache-Control: no-cache, must-revalidate

PHPのヘッダー機能 "日本でしかできない完全な例に寄与した第三者による):

    header('Pragma: public');
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");                  // Date in the past   
    header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');     // HTTP/1.1
    header('Cache-Control: pre-check=0, post-check=0, max-age=0', false);    // HTTP/1.1
    header ("Pragma: no-cache");
    header("Expires: 0", false);

場面をダウンロードに問題IE6-IE8over SSLやキャッシュ:no-cacheヘッダや類似値)とMS Officeファイルを利用できるキャッシュ:民間no-storeヘッダに戻りファイルを投稿す。ことができる。

私の場合は修正の問題がクロムとのこ

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

かのコンテンツのpreviusフォームのデータの場合、ユーザの戻るボタンをクリックしまセキュリティ上の理由により

私の場合でもすべてのブラウザの設定による Pragma:no-cache

のヘッダの答えを提供BalusCを予防できないSafari5それ以前のバージョンなど)から表示するコンテンツをブラウザからのキャッシュ使用時のブラウザの戻るボタンを押します。を防ぐことを追加する空onunloadイベントハンドラの属性をbodyタグ:

<body onunload=""> 

このhackで休憩を進キャッシュサファリ: あるクロスブラウザにonloadイベントをクリックすると"戻る"ボタン?

の受け答えが表示されない仕事IIS7+、より多くの質問のキャッシュヘッダを送信されてこないでII7:

など

の受け答えが正しいとするヘッダの設定が必要ないのは、どのように設定されている必要があります。このように動作しIIS7:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "-1");

最初のラインセット Cache-controlno-cache, し、次の行を追加し、その他の属性 no-store, must-revalidate

また、良好な測定だくには、リセットの ExpiresDefault.htaccess ファイルを使用している場合、このキャッシュを有効にする.

ExpiresDefault "access plus 0 seconds"

その後、利用できる ExpiresByType 設定値のファイルをキャッシュす:

ExpiresByType image/x-icon "access plus 3 month"

この場合にも便利な場合はパロアルトネットワークスのファイル例php等ているキャッシュされ、ブラウザかすことはできませんの姿はいかがでしょうか。チェック ExpiresDefault.

のほか、ヘッダの検討にお使いいただけるページ https.多くのブラウザーなキャッシュhttpsのデフォルトです。

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

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

完了 BalusC -> 答え ご利用の場合はperlでCGIを追加できます。

使用Perl:

Use CGI;    
sub set_new_query() {
        binmode STDOUT, ":utf8";
        die if defined $query;
        $query = CGI->new();
        print $query->header(
                        -expires       => 'Sat, 26 Jul 1997 05:00:00 GMT',
                        -Pragma        => 'no-cache',
                        -Cache_Control => join(', ', qw(
                                            private
                                            no-cache
                                            no-store
                                            must-revalidate
                                            max-age=0
                                            pre-check=0
                                            post-check=0 
                                           ))
        );
    }

Apache httpd.conf

<FilesMatch "\.(html|htm|js|css|pl)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>

注意: もしくは使用のhtmlタ、ブラウザを無視し、キャッシュされます。

ていただきたいと思いると指摘していればしないようにするためキャッシュのみに動的なコンテンツの追加者の追加ヘッダーとなるべきプログラム.

私は編集中の設定ファイルのプロジェクトを追加no-cacheヘッダに、キャッシュを無効に静的コンテンツではないが、通常ることが望ましい。応答ヘッダを修正コードを確保する画像のスタイルのファイルをキャッシュします。

このアプローチで明らかなものも見逃せません。

別のないよう注意する。ご注意をClearHeaders方法からhttpresponseに対してクラスです。で過ごせばよいかを教えてくれる打ち身-くじきご利用の場合でむやみに.いていきました。

後に残念にActionFilterAttributeイベントの影響清算参加者すべてのヘッダーがすべてのセッションデータデータTempData保管します。であり、リダイレクトからのアクションにはない明確なヘッダがリダイレクトのために設立されました。

第二は思うすべての利用ClearHeaders方法です。難削除ヘッダます。設定キャッシュ-Controlヘッダの適正を使用しているこのコード:

filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.AppendCacheExtension("no-store, must-revalidate");

無かったのですが、そんな夢の <head><meta> ます。追加HTTPキャッシュ関連のパラメータを直接以外のHTMLのdoc)は実際の作業でした。

サンプルコードをPythonで使用web.py web.header 電話おります。私は意図的に編集私の個人的不明のコードです。

    import web
    import sys
    import PERSONAL-UTILITIES

    myname = "main.py"

    urls = (
        '/', 'main_class'
    )

    main = web.application(urls, globals())

    render = web.template.render("templates/", base="layout", cache=False)

    class main_class(object):
        def GET(self):
            web.header("Cache-control","no-cache, no-store, must-revalidate")
            web.header("Pragma", "no-cache")
            web.header("Expires", "0")
            return render.main_form()

        def POST(self):
            msg = "POSTed:"
            form = web.input(function = None)
            web.header("Cache-control","no-cache, no-store, must-revalidate")
            web.header("Pragma", "no-cache")
            web.header("Expires", "0")
            return render.index_laid_out(greeting = msg + form.function)

    if __name__ == "__main__":
        nargs = len(sys.argv)
        # Ensure that there are enough arguments after python program name
        if nargs != 2:
            LOG-AND-DIE("%s: Command line error, nargs=%s, should be 2", myname, nargs)
        # Make sure that the TCP port number is numeric
        try:
            tcp_port = int(sys.argv[1])
        except Exception as e:
            LOG-AND-DIE ("%s: tcp_port = int(%s) failed (not an integer)", myname, sys.argv[1])
        # All is well!
        JUST-LOG("%s: Running on port %d", myname, tcp_port)
        web.httpserver.runsimple(main.wsgifunc(), ("localhost", tcp_port))
        main.run()

このリンクを事例とキャッシュ:

http://securityevaluators.com/knowledge/case_studies/caching/

概要によれば、第条、 Cache-Control: no-store 作品Chrome、Firefoxとが打ち出されている。-IEを受け入れその他の体制が、ChromeやFirefoxなのです。のリンクは良い読みの歴史のキャッシュおよび記録証のコンセプト。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top