Я использую пакет Microsoft.AspNet.StaticFiles
и настраиваю его в Startup.cs
как app.UseStaticFiles()
. Как изменить заголовки поставляемых файлов? Я хочу установить срок действия кеша и т. Д. Для изображений, css и js.Изменение заголовков статических файлов в Asp.net Core
ответ
Вы можете использовать StaticFileOptions, который содержит обработчик событий, который вызывается при каждом запросе статического файла.
Ваш Startup.cs должен выглядеть примерно так:
// Add static files to the request pipeline.
app.UseStaticFiles(new StaticFileOptions()
{
OnPrepareResponse = (context) =>
{
// Disable caching of all static files.
context.Context.Response.Headers["Cache-Control"] = "no-cache, no-store";
context.Context.Response.Headers["Pragma"] = "no-cache";
context.Context.Response.Headers["Expires"] = "-1";
}
});
Вы можете, конечно, изменить приведенный выше код для проверки типа содержимого и только изменять заголовки для JS или CSS или что вы хотите.
Вы должны написать промежуточное программное обеспечение, чтобы сделать это, у меня есть образец, который удалить заголовки на моем GitHub https://github.com/aguacongas/chatle
Посмотрите на проект ChatLe.HttpUtility, это немного сложнее. Вы можете посмотреть на этот вопрос, а также:
How to do remove some httpresponse headers on each response like Server and ETag?
Однако это не будет работать под IIS
, потому что IIS
управлять сама статика файлы. Он будет работать только на автономном приложении, например kestrel
или firefly
Вы имеете в виду, что все три из них не будут работать под IIS? Или один из ответов, в частности? –
В IIS вы можете добавить файл web.config в свою папку wwwroot с конфигурациями заголовков. Пример, который будет контролировать заголовки кэша для всех файлов:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<!-- Disable caching -->
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Это не сработает, если на веб-сайтах будут размещены модули .NET Core (например, в случае OP), так как .NET Core не соблюдает 'web.config'. Как работает .NET Core, в основном работает собственный веб-сервер Kestrel, который скрывается за IIS + HTTP-модулем (он же ANCM, как и основной модуль ASP.NET). https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/aspnet-core-module –
Если вы ищете решение, что позволяет настроить различные модели поведения для каждой среды (разработка, производство более &), который также является пунктом наличия этих параметров в файле web.config вместо Аппаратно кодируя весь материал, вы могли бы рассмотреть следующий подход.
Добавьте следующий раздел ключ/значение в appsettings.json файла:
"StaticFiles": {
"Headers": {
"Cache-Control": "no-cache, no-store",
"Pragma": "no-cache",
"Expires": "-1"
}
}
Затем добавить следующее в Configure
методе Startup.cs файла соответственно:
app.UseStaticFiles(new StaticFileOptions()
{
OnPrepareResponse = (context) =>
{
// Disable caching for all static files.
context.Context.Response.Headers["Cache-Control"] = Configuration["StaticFiles:Headers:Cache-Control"];
context.Context.Response.Headers["Pragma"] = Configuration["StaticFiles:Headers:Pragma"];
context.Context.Response.Headers["Expires"] = Configuration["StaticFiles:Headers:Expires"];
}
});
Это позволит разработчику определять различные настройки кеша с использованием разных/нескольких/каскадных файлов настроек (appsettings.json
, appsettings.production.json
и т. Д.) - это то, что можно было бы сделать со старым шаблоном конфигурации web.config
- с новым ядром ASP.NET Core.
Дополнительную информацию по теме Я также предлагаю прочитать this post и/или эти замечательные статьи из официального ASP.NET Основные документы:
На основании ответа Джоша слоняться по выше, добавил код, чтобы определить, если это PDF-файл
Startup.cs:
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
if(ctx.File.Name.ToLower().EndsWith(".pdf"))
{
ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=86400");
}
else
{
ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=31104000");
}
}
});
- 1. Проблема с обслуживанием некоторых статических файлов в ASP.NET Core MVC
- 2. ASP.NET Core: заголовки CORS только для определенных статических типов файлов
- 3. ASP.NET - Сложность Изменение заголовков Http
- 4. Обработка статических файлов через HttpModule в ASP.NET
- 5. Загрузка и изменение размера ASP.NET Core
- 6. Использование файлов Javascript в ASP.NET Core
- 7. Использование ASP.NET-маршрутизации для обслуживания статических файлов
- 8. Кэширование статических файлов в Django
- 9. Изменение заголовков, отправляемых IIS/ASP.NET. Побочные эффекты?
- 10. Объявление статических глобальных функций в файлах заголовков
- 11. Чтение файлов данных решения ASP.Net Core
- 12. Изменение заголовков в GridView
- 13. ASP.NET Core: пользовательская обработка файлов cookie
- 14. Ядро Asp.net по проблеме azure с загрузкой статических файлов
- 15. Медленное время загрузки из статических файлов asp.net core при использовании служебной ткани и обратного прокси
- 16. ASP.NET Core Azure развертывание отсутствующих файлов конфигурации
- 17. Изменение каталогов статических файлов в MVC3 вызывает 404
- 18. Application_BeginRequest для статических * .JS-файлов в ASP.NET в IIS6?
- 19. Несколько заголовков в asp.net
- 20. bash: Изменение расширения всех файлов заголовков в папке
- 21. Перенос статических файлов на новый путь в asp.net mvc
- 22. Ограничение загрузки статических файлов из webbrowser в asp.net
- 23. Как выполнять авторизацию на основе статических файлов в ASP.NET MVC?
- 24. Как изменить тип содержимого статических файлов сценариев в ASP.NET MVC?
- 25. Постоянный перенаправление устаревших маршрутов для статических файлов в ASP.Net MVC
- 26. Обслуживание статических файлов в ASP.NET 5 MVC 6
- 27. Обслуживание безстоящих статических файлов в ASP.NET MVC; получение 404s
- 28. Изменение статических переменных
- 29. PHP - загрузка статических заголовков отправляет класс
- 30. Безопасность статических файлов OWIN
[кэширование статических ресурсов навсегда с помощью ASP.NET Core] (https://www.softfluent.com/blog/dev/2017/01/08/Caching-static-resources-forever-with-ASP-NET-Core) – meziantou