Почему сжатие gzip ASP.NET портит CSS? - PullRequest
9 голосов
/ 22 августа 2008

У меня есть приложение веб-формы ASP.NET (3.5 SP1), над которым я работаю, и пытаюсь включить gzip fpr HTML и CSS, которые приходят по конвейеру. Я использую эту реализацию (и пробовал несколько других, которые подключаются к Application_BeginRequest), и кажется, что он повреждает внешний файл CSS, который используют страницы, но периодически ... внезапно все стили исчезнут обновите страницу, оставайтесь в таком состоянии некоторое время, а затем снова начинайте работать.

И IE7, и FF3 демонстрируют это поведение. При просмотре CSS с помощью панели инструментов веб-разработчика, он возвращает jibberish. Заголовок элемента управления кэшем выглядит как «частный», но я не знаю достаточно, чтобы выяснить, является ли это фактором или нет.

Кроме того, он работает на сервере разработки ASP.NET. Может быть, все будет в порядке с IIS, но я работаю на XP и это будет IIS5.

Ответы [ 2 ]

5 голосов
/ 22 августа 2008

Это только файлы CSS, которые повреждены? Проходят ли файлы JS (или любые другие статические текстовые файлы) нормально?

Также можете ли вы продублировать поведение, если перейдете непосредственно к файлу CSS?

Я включил сжатие только в IIS сервера Windows 2003, используя этот подход:

  1. IIS → Веб-сайты → Свойства → вкладка «Служба», установите оба флажка
  2. IIS → Расширения веб-служб → Щелкните правой кнопкой мыши, добавьте новый
      Name
          Http Compression 
      Required Files
          %systemroot%\system32\inetsrv\gzip.dll 
  3. IIS → Щелкните правой кнопкой мыши верхний узел, службы IIS, отметьте Включить прямое редактирование метабазы ​​
  4. Резервное копирование и редактирование %systemroot%\system32\inetsrv\MetaBase.xml
    1. Найти Location ="/LM/W3SVC/Filters/Compression/gzip"
      • Добавить png, css, js и любые другие статические расширения файлов к HcFileExtensions
      • Добавить aspx и любые другие исполняемые расширения к HcScriptFileExtensions
      • Сохранить
  5. Перезагрузите IIS (запустите iisreset)

Если у вас есть сервер Windows 2003/2008 для игры, вы можете попробовать этот подход.

0 голосов
/ 22 августа 2008

Если вы будете развертывать на IIS 6 или IIS 7, просто используйте встроенное сжатие IIS. Мы используем его на производственных сайтах для сжатия HTML, CSS и JavaScript без ошибок. Он также кэширует сжатую версию на сервере, поэтому удар по сжатию выполняется только один раз.

...