Почему CSS-файлы не загружаются при сжатии HTTP-ответа с использованием GZipStream?

StackOverflow https://stackoverflow.com/questions/573210

Вопрос

Я разрабатываю приложение, используя 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top