バンドルリクエストから送信されたキャッシュヘッダーを変更したい。現在はUser-Agent
で変更されていますが、バンドルリクエストで送信されたヘッダーを変更する方法はありますか?私は、ヘッダは、私が間違って証明するのが大好きだが、私はその可能性を考えていないプライベート静的関数であるBundle.SetHeaders
で設定を見ることができますSystem.Web.Optimization
アセンブリで簡単に見た後MVC4バンドルキャッシュヘッダー
。
バンドルリクエストから送信されたキャッシュヘッダーを変更したい。現在はUser-Agent
で変更されていますが、バンドルリクエストで送信されたヘッダーを変更する方法はありますか?私は、ヘッダは、私が間違って証明するのが大好きだが、私はその可能性を考えていないプライベート静的関数であるBundle.SetHeaders
で設定を見ることができますSystem.Web.Optimization
アセンブリで簡単に見た後MVC4バンドルキャッシュヘッダー
。
これは現在、現在公開されているものではありません。 IBundleTransformが変更できるBundleRepsonseの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;
我々はこれを開き、将来のカスタマイズ/これは、より拡張可能にする作業項目、当社のバックログを持っています。
この変更のタイムラインについては、このヘッダーの影響がCDN統合 –
の問題トラッカーURL:https://aspnetoptimization.codeplex.com/workitem/136で大きな影響を与えます。考えられる回避策についても触れています。 – janv8000
janv8000's comment on this responseに記載されているように回避策があります。あなたのWebサーバに、次のURLの書き換えルールを追加する必要があります。
明らか<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
前提条件を変更するには注意を払う必要があります。
私は、最初にこのヘッダーを追加するロジックの誰かからの意見にも興味があります。バンドルコード自体はユーザエージェントによって異なった振る舞いをしますか?それとも予防策ですか? – Jamie
私たちがこれを行う理由は、IEのキャッシュがページインスペクタへのリクエストを混乱させないように、またはVSの外部のIEにページインスペクタバンドルを提供するのを防ぐために、IEを使用してカスタムユーザエージェントを送信するVSページインスペクタ機能。 –
@HaoKung私は同じ問題を抱えています。私は 'private'の代わりに' public、max-age = 31536000'にキャッシュコントロールヘッダーの値を設定し、Etagヘッダーも追加したいと考えています。これらの両方が現在可能ではないようですね? –