31

メンテナンスを継承したウェブサイトがありますが、これは大きな混乱です。
私がしていることの1つは、パフォーマンスの向上です。Expires特に、画像にヘッダーを追加しています。

現在、PHPファイルを介して提供される画像がいくつかあり、それらにはExpiresヘッダーがありますが、毎回読み込まれます。

応答ヘッダーを見ると、次のことがわかります。

Expires Wed, 15 Jun 2011 18:11:55 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache

これは明らかに問題を説明しています。

今、私はコードベース全体を見てきましたが、どこにも「プラグマ」とは書かれていません。.htaccessにも関連するものはないようです。

これらの「プラグマ」(および「cache-control」)ヘッダーを設定する可能性のあるアイデアはありますか?また、どうすればそれを回避できますか?

4

7 に答える 7

31

原因はphp.iniである可能性があります。ここで、session.cache_limiter=nocacheです。アンチキャッシングヘッダーを回避するには、値を空白またはパブリックに変更します。

于 2011-04-18T16:51:44.887 に答える
12

私は同様の問題を抱えていましたPragma: nocache

session_cache_limiter(false);以前session_start();はそれを抑制しているようでした。

于 2012-01-04T02:06:20.743 に答える
10

PHPライブラリを含まないが、PHPファイルを介して画像を提供するファイルと同じフォルダにある単純なファイルを作成します。

file: test.php

ブラウザからこのファイルをリクエストし、ヘッダーを確認してください。不要なResponseヘッダーが表示された場合は、それらがApacheを介して構成されており、PHPファイルを介して生成されていないことがわかります。検索は、ディレクトリツリーの.htaccessファイルとhttp.confgに集中できます。およびその他の含まれているApache構成ファイル。あなたは検索したいと思うでしょう

<Directory....

<VirtualHost

あなたのサイトに適用されるかもしれないセクション。

その単純なPHPファイルのリクエストにヘッダーが表示されない場合は、PHPがヘッダーをどこかに設定していることがわかります。画像提供ファイルの最後(または画像をエコーし​​て終了した直後)、ただし次のPHPスニペット)

var_dump(get_included_files());

画像提供URLを介して画像をリクエストします。上記のスニペットは、リクエストで使用されたすべてのPHPファイルを出力します。(ブラウザが無効な画像を報告するため、ソースを表示するか、curlを使用して生の出力を表示する必要があります)

作業ファイルにファイルのサブセットを用意し、それらを検索して、

header();

働き。このheader関数は、生のPHPコードがResponseヘッダーを設定できる唯一の方法です(私は思います)。また、検索する必要があります

call_user_func
eval
$$

PHPのメタプログラミング機能を使用して関数を呼び出す動的コードがページにある場合に備えてheader

幸運を!

于 2010-06-15T18:50:14.200 に答える
9

のヘッダーの設定を解除してみてください.htaccessico以下の例ではjpeg、拡張子、、、、、、に一致するすべてのファイルの設定を解除します。pnggifjscss

<FilesMatch "\.(ico|jpeg|png|gif|js|css)$">
    Header unset Cache-Control
    Header unset Pragma
</FilesMatch>

この記事でいくつかのヒントを見つけることができます。

于 2010-06-15T18:53:50.760 に答える
4

私はこれを実行時にこれで行いました:

header("Pragma:");

これにより、スクリプトはプラグマヘッダーの設定を解除しました。

于 2011-12-20T18:25:32.703 に答える
1

.htaccessにない場合は、メインのApache構成ファイルにある可能性があります。セットアップによっては、そのインクルードの1つにある可能性があります。

于 2010-06-15T18:24:49.420 に答える
0

同様の問題を抱えている人々にとって、多くのフレームワークがヘッダー、特にキャッシュヘッダーを自動追加することは注目に値します。フレームワークライブラリまたはアプリ内でそれらをオーバーロードするのはかなり簡単です。

于 2012-08-13T22:44:39.963 に答える