2

ページのテンプレートを生成するスクリプトがあります。また、このスクリプトはHTMLでレンダリング<script><link rel='stylesheet'>タグ付けを行います。

「?v=xxxxx」パラメータでキャッシュを壊す機能を追加したいのですが。

私はそのような方法でそれを行います:

foreach ($scripts as &$script) {

    // get script file name
    $script = "{$this->_js_folder}/{$script}";

    // get it's realpath
    $realfile = realpath(substr($script,1));

    // hashing the file
    $hash = md5_file($realfile);

    // adding cache-breaking number
    $script .= '?v='.$hash;

} //: foreach

ユーザーがページを更新するたびに約12個のファイルをハッシュするのは遅いではありませんか?

4

3 に答える 3

5

個人的には、ファイルをハッシュしません。これはリソースの浪費です。その代わりに、最後に変更されたタイムスタンプをv?= ....に追加します。つまり、次のようになります。

foreach ($scripts as &$script) {

    // get script file name
    $script = "{$this->_js_folder}/{$script}";

    // get it's realpath
    $realfile = realpath(substr($script,1));

    // getting last modified timestamp
    $timestamp = filemtime($realfile);

    // adding cache-breaking number
    $script .= '?v='.$timestamp;

} //: foreach
于 2011-06-23T21:48:50.167 に答える
3

これは、ユーザーが毎回キャッシュを壊すのは残酷です。これらのファイルをどのくらいの頻度で変更しますか?

とにかく、タイムスタンプを使用することをお勧めします-md5よりはるかに高速です。

于 2011-06-23T21:46:29.033 に答える
2

サイトの更新方法によっては、代わりに変更日を使用する必要があります。

ただし、常にすべてのファイルを再アップロードする場合、これはお勧めできません。
ただし、ハッシュをメモリにキャッシュできるようになるはずです(そしておそらくタイムスタンプもチェックします)

于 2011-06-23T21:47:31.537 に答える