PHPで膨大な数の補助ファイルを提供することは、まさにそのためのものではありません。
代わりに、nginxの場合はX-accel、Lighttpdの場合はX-Sendfile、Apacheの場合はmod_xsendfileをご覧ください。
最初のリクエストはPHPによって処理されますが、ダウンロードファイルが決定されると、サーバーがファイル送信を処理することを示すいくつかのヘッダーが設定されます。その後、PHPプロセスが解放されて別のサービスが提供されます。
次に、Webサーバーを使用してキャッシュを構成できます。
静的コンテンツは、PHPから生成し、作成することは特に高価されている場合は、ローカルファイルに出力を書き込み、再び上記の方法を適用することができ、コンテンツ
を生成。
ローカルファイルへの書き込みができないか、あなたはキャッシュを制御するためにHTTPレスポンスヘッダを使用することができますしたくない場合は、次の
Expires: <absolute date in the future>
Cache-Control: public, max-age=<relative time in seconds since request>
これは期限が切れるまで、クライアントがページの内容をキャッシュするようになりますユーザーがページの再読み込みを強制したとき(F5キーを押すなど)動的動的なコンテンツのコンテンツ
を生成
あなたはブラウザがあなたにするたびにpingを実行したいのですが、何か新しいものがあります場合にのみページの内容を送信します。主に低減させるために使用される
If-None-Match: <hash of the contents that you sent last time>
If-Modified-Since: <absolute date of last contents change>
ETag
を:ブラウザがもう一度スクリプトをpingし
ETag: <hash of the contents>
Last-Modified: <absolute date of last contents change>
、彼らはそれぞれ以下のリクエストヘッダを追加します:あなたは、いくつかの他のレスポンスヘッダを設定することによって、これを達成することができます場合によってはコンテンツのハッシュを知るために、ネットワークトラフィックを計算する必要があります。
Last-Modified
は、ローカルファイルキャッシュ(ファイルに変更日がある場合)を適用するのが最も簡単です。簡単な条件は、それが動作します:
if (!file_exists('cache.txt') ||
filemtime('cache.txt') > strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
// update cache file and send back contents as usual (+ cache headers)
} else {
header('HTTP/1.0 304 Not modified');
}
ファイルのキャッシュを行うことができない場合、あなたはまだ内容がその間に変更されたかどうかを判断するためにETag
を使用することができます。
クールアイ。しかし、まだ私のために一致しません。 –
この眼の所有者は今JuubiのJinchuurikiです、確かにしないでください! – Mehran
今のところ、私のトランプカードはまだ明らかにされていません。 [アニメ&マンガチャット](http://chat.stackexchange.com/rooms/6697/anime-and-manga)でこのチャットを続けましょう。このスレッドを混乱させないために。 –