2008-08-22 2 views
9

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

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

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

ответ

5

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

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

Я только включен сжатие IIS 2003 сервера Windows с помощью этого подхода:

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

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

+1

IE7/8 загружал поврежденные ZIP-файлы, в то время как Firefox/Chrome/Opera не было. Кажется, это связано с тем, что IIS6 был gzip, сжимающим zip-файл, что бы расстроило IE. Ваше решение устранило мою проблему, и IIS больше не пытается сжимать сжатые файлы. – 2009-05-16 16:39:52

0

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

+0

К сожалению, использование настроек по умолчанию, похоже, приводит к разрыву ZIP-файлов в IE7/8. Как оказалось, по умолчанию IIS хочет попробовать сжать zip-файлы, что довольно глупо. – 2009-05-16 16:41:17