Подтвердить что ты не робот

Заголовки кеша MVC4

Я хочу изменить заголовки кеша, отправленные из запроса пакета. В настоящее время он меняется на User-Agent, но я не хочу его, есть ли способ изменить заголовки, отправленные запросом на пакет?

После быстрого просмотра сборки System.Web.Optimization я вижу, что заголовки устанавливаются в Bundle.SetHeaders, который является частной статической функцией, поэтому я не думаю, что это возможно, хотя я бы хотел, чтобы вас доказали неправильно.

4b9b3361

Ответ 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 соответственно.