SQUISHITは200の代わりに304(修正されていない)を与える(キャッシュから)
-
12-12-2019 - |
質問
私の.jsファイルと.cssファイルを組み合わせるための "Squishit"を使っています。 問題は、他のすべてのリソースが200(キャッシュから)の場合、スケッシュバンドルが304(変更されていない)になることです。私が定期的にファイルを置くならば、私は欲しい200の結果を得ることができます。 私のコードの例:
@MvcHtmlString.Create(@Bundle.JavaScript().Add("~/Scripts/Libs/jquery.cookie.js").Add("~/Scripts/Libs/jquery.dynatree.min.js").Add("~/Scripts/Libs/jquery.json-2.3.min.js").Add("~/Scripts/Libs/jsrender.js").Add("~/Scripts/Libs/jstorage.min.js").Add("~/Scripts/Common/utils.js").Add("~/Scripts/DataServices/AccountDataServices.js").Add("~/Scripts/AccountSelection.js").WithMinifier<SquishIt.Framework.Minifiers.JavaScript.MsMinifier>().Render("~/Scripts/AccSelectionscriptBandle_#.js"))
.
結果:
edit : 私は "debug= false"を使っています。 他のすべてのリソースは200(キャッシュから)です。
解決
私はあなたが正しいトラックにいると思いますが、あなたはさらに1ステップ進む必要があります、そしてあなたのClientCache設定にもう1つのオプションを追加する必要があります(cachecontrolcustom="必須再生"):
<staticContent>
<!-- A clients cache will expire 90 days after it is loaded -->
<!-- each static item is revalidated against the server to see if the LastModifiedDate is different than the If-Modified-Since date-->
<!-- http://msdn.microsoft.com/en-us/library/ms689443.aspx -->
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="90.00:00:00" cacheControlCustom="must-revalidate"/>
</staticContent>
.
CacheControlCustomは、サーバーのチェックを強制し、特定の静的ファイルのLastModifiedDateとIF修正を比較します。CacheControlMaxageを設定すると、特にサーバー上のファイルを変更すると、クライアントが自動的にファイルを再利用できない場合があります。あなたが持っている設定(500日)は、500日間クライアントのマシン上にある後にファイルを引っ張るだけです。それがあなたの意図であるならば、素晴らしいです。(パッケージ内のJS / CSSファイルを変更するため、JS / CSSファイルを変更するため、Squishitがキャッシュの動作をマスクすると、異なるハッシュ名が生成されます。)
コメント内のURLはMSDNからもう少し説明することができます。
所属していません StackOverflow