よくファイルをキャッシュすることは古い質問ですが、いくつかのファイルのいくつかの変更を更新したときに最後のバージョンが確実に提供されるようにするためです。たとえば、タイムスタンプのような get 変数をファイル uri に追加できることはよく知られていますが、キャッシュの利点がすべて失われ、ファイルがキャッシュされることはありません。今のところ、いくつかの Web 提案を調べて見つけた最良の方法は次のとおりです。
- htaccess に有効期限情報を追加します。例: ExpiresByType text/javascript "access plus 7 days"
- fileName+'-'+lastModifTimestamp(src)+fileExtension のリクエスト、例: 'dir/usualfilename-345678.js'. lastModifTimestamp は PHP filemtime($src) のようなサーバー スクリプトによって設定されます。
- 次に、htaccess で、「dir/usualfilename-2345678.js」を「dir/usualfilename.js」に書き換える rewriterule を追加します。
RewriteRule (.+)-[0-9]+(\.(js|css))$ $1$2 [L]
利点は、使用するファイル名を変更する必要がないことです。ビジター ブラウザーの動作がどれほど賢くても奇妙でも、キャッシュは効果的であり、変更された場合に更新されたファイルを確実に取得します。
次に、私の dojoConfig (dojo 1.7+) には、たとえば、すべてのモジュール パスの末尾に最後の modif タイムスタンプが付けられているようなパッケージがあります (私の dojo 構成は、PHP で動的に記述されています)。私が見つけた唯一の方法は、エイリアス プロパティをいじることです。パッケージのすべてのファイルにエイリアスを設定する必要があります。問題は、それが非常に重いことです。パッケージに 100 個のモジュールがある場合、必要な場合でも 100 個の宣言されたエイリアスが必要になります。たった3つのファイル...あまり「動的」ではありません。cachebust プロパティは近いですが、すべてのファイルに対してであり、上で説明したように問題があります。
私の質問は次のとおりです。
- 言及されているように、キャッシュと更新されたファイルを管理するより良い方法を知っていますか
- dojoConfig で、一部のパッケージ ファイルにこの操作を適用するスマートな方法はありますか?
情報をありがとう!