Заголовки кеша MVC4
Я хочу изменить заголовки кеша, отправленные из запроса пакета. В настоящее время он меняется на User-Agent
, но я не хочу его, есть ли способ изменить заголовки, отправленные запросом на пакет?
После быстрого просмотра сборки System.Web.Optimization
я вижу, что заголовки устанавливаются в Bundle.SetHeaders
, который является частной статической функцией, поэтому я не думаю, что это возможно, хотя я бы хотел, чтобы вас доказали неправильно.
Ответы
Ответ 1
Это не то, что мы сейчас показываем сегодня. Мы раскрываем только свойство Cacheability на BundleRepsonse, которое может изменить IBundleTransform. И да, мы явно задали следующие вещи:
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;
У нас есть рабочий элемент нашего отставания, чтобы открыть его и сделать его более расширяемым/настраиваемым в будущем.
Ответ 2
Обходной путь вокруг него, как упоминается в janv8000, комментирует этот ответ. Вам необходимо добавить на свой веб-сервер следующее правило перезаписи 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
соответственно.