Почему CSS-файлы не загружаются при сжатии HTTP-ответа с использованием GZipStream?
-
05-09-2019 - |
Вопрос
Я разрабатываю приложение, используя asp.net 2.0 (C #), в котором я пытаюсь реализовать сжатие моих файлов, чтобы повысить производительность моего веб-сайта.
Для этого я добавил код в свой глобальный файл.asax для сжатия всех запросов (.aspx, .js, .css) Но когда я запускаю свое приложение, оно работает хорошо в первый раз, тогда CSS не загружается, а веб-страница не отображается должным образом.
Почему это происходит??
Отредактировано (добавлен мой код сжатия)
Мой код сжатия файла Global.asax выглядит следующим образом:
void Application_BeginRequest()
{
HttpContext incoming = HttpContext.Current;
string oldpath = incoming.Request.Path.ToLower();
incoming.Response.Filter = new GZipStream(incoming.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
}
Также, пожалуйста, дайте мне знать, есть ли какой-либо другой лучший способ сделать то же самое, используя файл Global.asax, потому что у меня нет доступа к настройкам IIS, а также у меня нет разрешения на реализацию HttpModule, вот почему я использую файл Global.asax.
Спасибо
Решение
Для статических файлов вы можете настроить IIS на выполнение сжатия за вас, нет необходимости реализовывать это самостоятельно.
В IIS6 это глобальная настройка (свойства узла "Веб-сайты" в диспетчере IIS, вкладка service).
В IIS7 это значение задается для каждой папки, и оно также будет сжимать динамическое содержимое для вас.Он может быть установлен либо в диспетчере IIS, либо в web.конфигурация файл:
<configuration>
<system.webServer>
<urlCompression doDynamicCompression="true" doStaticCompression="true" />
</system.webServer>
</configuration>