29

そのため、php でヘッダーを送信してページをキャッシュしています (これは「CDN」(contendo/akamai) にも統合されています)。私はいつもこの pragma: cache header を使用しています。さまざまな例で同様に使用されているのを見てきました。ただし、開発したこの .net アプリケーションのトラフィックをテストするためにフィドラーをチェックしたところ、次のように表示されます。

Legacy Pragma Header is present: cache
!! Warning IE supports only an EXACT match of "Pragma: no-cache". IE will ignore the Pragma header if any other values are present.
...

それは大丈夫だと思います。残りの応答は問題なく、私の仕様どおりです。これが私のコードです:

function headers_for_page_cache($cache_length=600){
    $cache_expire_date = gmdate("D, d M Y H:i:s", time() + $cache_length);
    header("Expires: $cache_expire_date");
    header("Pragma: cache");
    header("Cache-Control: max-age=$cache_length");
    header("User-Cache-Control: max-age=$cache_length");
}

問題は、これが問題になるかどうかです。プラグマヘッダーは何をしますか? 必要ですか?HTTPヘッダー仕様のドキュメントを確認したところ、実装固有であり、適用される唯一のプラグマは「Pragma: no-cache」であるとのことでした。

これは、特定の時間キャッシュするヘッダーの最良の選択ですか?

4

1 に答える 1

44

非常に単純化された形式でPragma:no-cache or Pragma:cacheは、キャッシュ命令をクライアントの実装、特にブラウザとプロキシに渡す方法が「ほぼ」時代遅れになりました。クライアントの実装がプラグマ ヘッダーに応答する方法はさまざまであるため、仕様では実装固有であると述べられています。

より現代的な方法はCache-control、ほとんどすべてのクライアント実装が厳密に従っているため、安全に依存できるものです。

また、両方があり、同じ命令に設定されている場合Cache-controlPragmaたとえばキャッシングCache-controlが優先されます。

これは、キャッシングに関連するすべてについて書かれた優れた記事であり、非常に興味深く有用な読み物になると思います: http://www.mnot.net/cache_docs/

于 2012-08-16T18:23:39.670 に答える