1

同じページに同じファイルを複数回含めています。これを行うと、PHPがファイルをキャッシュしているように見えます。rand 関数で乱数を生成すると、両方のインクルードで同じです。PHPがこれを行うのを止める方法を知っている人はいますか? このようないくつかの異なるヘッダー関数を試しましたが、機能しません:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0

編集:わかりました、私は愚かで、ファイルをキャッシュしていると思われるjqueryスクリプトからインクルードを呼び出していたことを忘れていました。誰かが求めていたコードを見に戻って、それに気づきました。みんな、ありがとう。

4

2 に答える 2

1

同じファイルを複数回インクルードすることは、特に良い方法ではないことをお勧めします。

より良い解決策は、それを一度含めて、それに含まれる関数を複数回呼び出すことです。

明らかに、これはコードの動作方法を変更することを意味します。現在、コードが含まれるとすぐに実行されるコードのブロックとして記述されていると思います。自由に呼び出すことができるように、関数 (または必要に応じて複数の関数) で囲まれるように変更する必要があります。

次に、プログラムの開始時に一度だけ含めます。

これが質問に直接答えないことはわかっていますが、このようにすることでコーディングの実践が改善され、コードの管理と保守がはるかに簡単になります。

それが役立つことを願っています。

于 2012-06-25T19:18:52.763 に答える
0

そのファイル内で同じ値で pRNG をシードしている可能性があります。とにかく、ヘッダーはスクリプトではなくブラウザに影響します。

インクルードされたファイルがキャッシュされていないことは確かです。ファイルをインクルードすることですべての「関数」が実装されるコンソール プログラムを作成しました。プログラムを再起動せずにファイルを変更しても、更新されたファイルをロードできました。

したがって、問題はランダムシードか、他の何かです。echo microtime()2 回とも同じ結果が得られるかどうかを確認してください。

于 2012-06-25T19:14:31.057 に答える