9

私はfilemtime次のようなhtmlで外部リソースをフィンガープリントするために使用しています:

<link rel="stylesheet" href="screen-<?=md5(filemtime('screen.css'));?>.css">

有効な更新と によって返されるタイムスタンプの間に大幅な遅延があることに気付いたfilemtimeので、上部に追加clearstatcache()しました。これで問題が解決したようです。しかし、phpマニュアルによると:

同じファイル名に対して複数の操作を実行していて、その特定のファイルに関する情報をキャッシュしないようにする必要がある場合にのみ、clearstatcache() を呼び出す必要があります。

だから私はそれを正しく使用しているかどうか疑問に思っています。

また、すべての呼び出しでキャッシュを完全にクリアするパフォーマンスが心配です。サーバーの大幅な速度低下を引き起こす可能性があるかどうか、誰か教えてもらえますか?


clearstatcache2 つの追加パラメーターも受け入れますが、その意味がわかりません。

clear_realpath_cache realpath キャッシュをクリアするかどうか。

filename特定のファイル名のみの実パスと統計キャッシュをクリアします。clear_realpath_cache が TRUE の場合にのみ使用されます。

「リアルパス キャッシュ」の意味がわかりません。それに関する情報も見つかりませんでした。このように呼び出すことは意味がありますかclearstatcache:

clearstatcache(true,'/path/to/screen.css');

その特定のファイルに関連する情報のみを消去する目的で (したがって、「影響」を軽減しますclearstatcache)?

4

3 に答える 3

2

$ clear_realpath_cacheは、realpath関数の呼び出しに関連しており、その結果もキャッシュされます。これは、filemtimeの呼び出しには影響しません。

于 2012-11-28T15:39:06.190 に答える
2

直接お答えすることはできません。

ただし、md5_file('screen.css')の代わりに使用することをお勧めしますmd5(filemtime('screen.css'))

于 2012-11-28T15:39:07.223 に答える
2

関数を正しく使用しているようです。キャッシュしたい他の stat 関数 (ドキュメントに記載されている) を使用していない限り、大幅な速度低下を引き起こす理由はわかりません。

あなたがinclude('somefile')、cwd などsomefileによって決定されるように、いくつかの異なる場所にいる可能性があります。リアルパスキャッシュにより、これらの場所を繰り返し検索する必要がなくなります。include_path

あなたの使用のために、あなたのコードは問題ないようです。

于 2012-11-28T15:43:52.760 に答える