#iis #web-config #gzip
#iis #web-config #gzip
Вопрос:
Я пытаюсь доставить в браузер сжатую версию моих файлов javascript с использованием coldfusion.
Я попытался добавить следующее в web.config, но все еще не показываю GZIP (используя Fiddler)
<httpCompression directory="%SystemDrive%inetpubtempIIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
Комментарии:
1. Я не уверен, что не так… Браузер должен разархивировать файл, чтобы он мог его обработать. Если вы посмотрите на размер транспорта в firebug, он меньше размера файла? Кроме того, вы обслуживаете файл js как файл cfm или просто js-файл?
2. исключительно как файл js с использованием zbugs.com для сжатия и gzip
3. Почему это помечено как Coldfusion?
Ответ №1:
Я решил свою проблему, установив динамическое сжатие в службах ролей IIS, и теперь это работает как по маслу.
Комментарии:
1. Я не могу поверить, что сжатие JS работало, а CSS — нет. И IIS не выдал мне никакой ошибки или предупреждения! Ваш ответ помог, спасибо!
Ответ №2:
При включенном сжатии в IIS нет необходимости предварительно сжимать файлы .js. Сервер будет управлять сжатием, проверяя поддержку браузера и отправляя сжатый файл, когда он поддерживается, без выполнения вами какой-либо работы с вашей стороны.
Вам просто нужно поместить файл js на сервер, и все будет готово. Просто используйте обычное имя файла в src для тега script, и сервер будет управлять всем остальным. Поскольку это не файл ColdFusion, сервер ColdFusion никогда к нему не прикасается.
Комментарии:
1. Но тогда почему я получаю в YSlow (плагин firebug) сообщение «Есть x компонентов обычного текста, которые должны быть отправлены в сжатом виде с помощью gzip»
2. Потому что, если я правильно понимаю, сжатие и gzip — это разные уровни сжатия… Итак, IIS позаботится о сжатии, но я предполагаю, что Coldfusion (в моем случае) позаботится о доставке файлов gzip
3. проверьте с помощью Fiddler следующим образом: blogs.msdn.com/b/vivekkum/archive/2009/02/18 /…
4. Сжатие из IIS должно быть gzip или в формате, который браузер отправляет в заголовке accepts.
Ответ №3:
Разве браузер просто не распаковывает его, как и должно быть, и вы не видите конечный результат. Вы также можете использовать cfhttp для перехода по тому же URL-адресу и посмотреть, что он возвращает. С помощью этого вы можете легко контролировать и видеть, что сжато, а что нет.
Ответ №4:
Используйте только опцию сжатия в IIS и напрямую ссылайтесь на файлы JS / CSS, не передавайте их через ColdFusion.
Содержимое в окне вашего браузера было уменьшено, а не сжато.
Браузеры знают о сжатом контенте; браузер сообщит серверу, какие форматы (если таковые имеются) они могут обрабатывать. Сжатый js-файл автоматически распаковывается браузером, прежде чем вы его увидите. Вот почему содержимое, которое мы видим, является обычным текстом.
Что касается YSlow, убедитесь, что он не жалуется на несжатые файлы CSS.
Ответ №5:
Похоже, вы указали, что тип MIME "application/x-javascript"
должен быть сжат IIS. Однако вы возвращаете MIME-тип "application/javascript"
из ColdFusion.
Комментарии:
1. Я удалил CF-код, поскольку IIS должен быть способен обрабатывать его без CF
Ответ №6:
для сжатия css, возможно, вам, ребята, стоит попробовать этот атрибут;
<add mimeType="text/css" enabled="true"/>
и это весь код (включая использование кэширования браузера);
<system.webServer>
<httpCompression directory="C:inetpubtempIIS Temporary Compressed Files">
<scheme name="gzip" dll="C:WindowsSystem32inetsrvgzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
<add mimeType="text/css" enabled="true"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00"/>
</staticContent>
</system.webServer>
Комментарии:
1. Разве <добавить mimeType=»text / *» включено =»true» /> уже не охватывает все текстовые типы MIME, включая text / css?