Как добавить отсутствие кеша в ответы Kestrel?

Я использую Asp.Net Core RC2 и Kestrel в качестве своего веб-сервера. Мне нужно убедиться, что на запросы (в данном случае все они) отвечает заголовок без кеша, чтобы браузеры получали самую новую версию (не 304).

Есть ли способ в Startup настроить Kestrel или способ внедрить этот шаг в конвейер?

РЕДАКТИРОВАТЬ: в моей ситуации может быть лучшим выбором отсутствие магазина: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching "Ответ no-store не может быть кэширован и должен полностью извлекаться при каждом запросе. ."


person AlignedDev    schedule 02.05.2016    source источник


Ответы (1)


Вы можете использовать промежуточное ПО для работы с заголовками. Например, вы можете принудительно отключить кэш-контроль, добавив следующее в начало метода Configure вашего запуска:

app.Use(async (httpContext, next) =>
{
    httpContext.Response.Headers[HeaderNames.CacheControl] = "no-cache";
    await next();
});
person N. Taylor Mullen    schedule 02.05.2016
comment
nit: вы можете использовать встроенный HeaderNames class, чтобы избежать первой магической строки: httpContext.Response.Headers[HeaderNames.CacheControl] = "no-cache". - person Kévin Chalet; 02.05.2016
comment
Обновлено, чтобы отразить изменения. - person N. Taylor Mullen; 02.05.2016
comment
Убедитесь, что это выше других app.Uses (например, app.UseDefaultFiles или app.UseStaticFiles()). - person AlignedDev; 02.05.2016
comment
@Aligned спасибо, потенциально сэкономил мне полчаса отладки. - person René Sackers; 07.06.2017