Почему сжатие gzip ASP.NET портит CSS?

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

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

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

22.08.2008 14:33:00
2 ОТВЕТА
РЕШЕНИЕ

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

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

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

  1. IIS → Веб-сайты → Свойства → вкладка «Сервис», установите оба флажка
  2. IIS → Расширения веб-служб → Щелкните правой кнопкой мыши, добавьте новый
      имя
          Http-сжатие 
      Обязательные файлы
          % 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 для игры, вы можете попробовать этот подход.

5
22.08.2008 14:57:38
IE7 / 8 загружал поврежденные zip-файлы, а Firefox / Chrome / Opera - нет. Похоже, это связано с тем, что IIS6 сжимал ZIP-файл с помощью gzip, что расстроило IE. Ваше решение устранило мою проблему, и IIS больше не пытается повторно сжимать сжатые файлы.
Cory R. King 16.05.2009 16:39:52

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

0
22.08.2008 14:52:16
К сожалению, использование настроек по умолчанию нарушает работу zip-файлов в IE7 / 8. Оказывается, по умолчанию IIS хочет попробовать сжать zip-файлы, что довольно глупо.
Cory R. King 16.05.2009 16:41:17