web-dev-qa-db-ja.com

プラグマヘッダーとは何ですか?ページのキャッシュ.. and IE

そのため、ページをキャッシュするためにphpでヘッダーを送信しています(これは「CDN」(contendo/akamai)にも統合されます)。私は常にこのプラグマを使用します。キャッシュヘッダー、さまざまな例で使用されています。しかし、私たちが開発したこの.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」のみであると書かれています。

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

28
Parris

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

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

また、同じ命令に対してCache-controlPragmaの両方が設定されている場合(キャッシングなど)、Cache-controlが優先されます。

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

39
raidenace