サイトのアップデートをリリースするときに、キャッシュされたJavaScriptファイル、CSS、画像などを処理する戦略を開発しようとしています。 JavaScriptファイルにバージョン番号を実装する前に、各リリース後にIISリセットすると、キャッシュされたファイルが効果的に再送信されるかどうか疑問に思いました。
IISResetを実行すると、IISキャッシュがクリアされ、クライアントのリクエストが入ってくると、バックアップが開始された後に再構築が開始されます。ファイルを更新すると、古いキャッシュファイルがstaleとIISは、更新されたファイルを提供し、新しいファイルでキャッシュを更新します。
IISReset(厳しいですが)はIISキャッシュをクリアしますが、プロキシまたはクライアントのローカルキャッシュでは何もしません。たぶん、用語が少し混同されているかもしれませんが、キャッシングに関しては「再送」という概念はありません。すべてがリクエストベースです。クライアントが何かをリクエストし、それがキャッシュで見つかった場合、キャッシュから提供されます。コンテンツの有効期限を強制する必要があります。同じファイル名を維持する場合は、ファイル。
いいえ、クライアントのキャッシュはコンテンツの有効期限に基づいています。
1つのjavascriptファイルを変更する場合、新しいファイルを取得するには、Webアプリケーションを実行しているすべてのクライアントが必要です。「最近」であることは明らかです。
各クライアントがサーバーから新しいファイルを取得するには、WebページのJavaScriptのinclude/scriptに"?version=1"
。
?blue=hello
または?v=1234155
それはあなたが望むようです。重要なのは、JavaScriptを変更するたびに異なる値を使用することです。 "?version=1"
最初の変更、"?version=2"
2番目の変更の場合、次の値を知ることは実際的であり、単一です。また、必要に応じてGUIDを使用できます:"?version=4747b320-62ce-11cf-a5d6-28db04c10777"
または、日付と時刻を使用できます"?version=20130220175025"
2013/02/20 17:50:25の場合。
<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?version=1"></script>
<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?k=4747b320-62ce-11cf-a5d6-28db04c10777"></script>