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

Я разрабатываю приложение, используя asp.net 2.0 (C #), в котором я пытаюсь реализовать сжатие моих файлов, чтобы улучшить производительность моего сайта.

Для этого я добавил код в свой файл Global.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.

Спасибо

1 Ответ

3 голосов
/ 21 февраля 2009

Для статических файлов вы можете настроить IIS для выполнения сжатия, нет необходимости реализовывать его самостоятельно.

В IIS6 это глобальная настройка (свойства узла «Веб-сайты» в диспетчере IIS, вкладка «Служба»).

В IIS7 это устанавливается для каждой папки и также сжимает динамический контент для вас. Его можно установить в диспетчере IIS или в файле web.config :

<configuration>
  <system.webServer>
    <urlCompression doDynamicCompression="true" doStaticCompression="true" />
  </system.webServer>
</configuration>
...