バンドルリクエストから送信されたキャッシュヘッダーを変更したい。現在はさまざまですが、変更User-Agent
したくないのですが、バンドルリクエストによって送信されるヘッダーを変更する方法はありますか?
アセンブリをざっと見てみると、プライベート静的関数であるSystem.Web.Optimization
ヘッダーが設定されていることがわかりBundle.SetHeaders
ます。間違っていることが証明されることを望んでいますが、それは不可能だと思います。
バンドルリクエストから送信されたキャッシュヘッダーを変更したい。現在はさまざまですが、変更User-Agent
したくないのですが、バンドルリクエストによって送信されるヘッダーを変更する方法はありますか?
アセンブリをざっと見てみると、プライベート静的関数であるSystem.Web.Optimization
ヘッダーが設定されていることがわかりBundle.SetHeaders
ます。間違っていることが証明されることを望んでいますが、それは不可能だと思います。
これは、現在私たちが公開しているものではありません。IBundleTransformが変更する可能性のあるBundleResponseのCacheabilityプロパティのみを公開します。そして、はい、次のことを明示的に設定します。
HttpCachePolicyBase cachePolicy = context.HttpContext.Response.Cache;
cachePolicy.SetCacheability(bundleResponse.Cacheability);
cachePolicy.SetOmitVaryStar(true);
cachePolicy.SetExpires(DateTime.Now.AddYears(1));
cachePolicy.SetValidUntilExpires(true);
cachePolicy.SetLastModified(DateTime.Now);
cachePolicy.VaryByHeaders["User-Agent"] = true;
これを開き、将来的にこれをより拡張可能/カスタマイズ可能にするための作業項目がバックログにあります。
この応答に関するjanv8000のコメントに記載されているように、回避策があります。次のURL書き換えルールをWebサーバーに追加する必要があります。
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Cache Bundles" preCondition="IsBundles" patternSyntax="ExactMatch">
<match serverVariable="RESPONSE_Vary" pattern="User-Agent" />
<action type="Rewrite" value="Accept-Encoding" />
</rule>
<preConditions>
<preCondition name="IsBundles" patternSyntax="Wildcard">
<add input="{URL}" pattern="*/bundles/*" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
もちろん、すべてのバンドルをバンドルフォルダーに入れるか、それに応じて前提条件を変更するように注意する必要がありますIsBundles
。