У меня есть веб-приложение, написанное на C # поверх платформы ASP.NET Core 2.2 MVC.
Мое приложение отображает множество изображений при каждом запросе, что увеличивает время загрузки и увеличивает использование полосы пропускания.Чтобы улучшить загрузку страницы и использование полосы пропускания, я хочу сжать ответ HTTP, используя форматы Brotli и Gzip .
К счастью, у Microsoft есть пакет, который использует промежуточное ПО для сжатияОтвет HTTP для меня называется Microsoft.AspNetCore.ResponseCompression .Из официальной документации пакета сжатие для защищенных веб-сайтов по умолчанию отключено.
Использование сжатия с динамически генерируемыми страницами может привести к проблемам с безопасностью, таким как CRIME и BREACH атак.
Мой вопрос, как мне сжать ответ, избегая проблем с безопасностью?
Вот как я могу настроить Microsoft.AspNetCore.ResponseCompression пакет
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression(options =>
{
options.Providers.Add<BrotliCompressionProvider>();
options.Providers.Add<GzipCompressionProvider>();
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
new[] { "image/svg+xml", "image/jpeg" });
options.EnableForHttps = true;
});
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCompression();
...
}
Приведенная выше настройка будет применять сжатие для следующих типов MIMI
- application / javascript
- application / json
- application / xml
- text / css
- text / html
- text / json
- text / plain
- text / xml
- image / svg + xml
- image / jpeg