Вопрос

Из более раннего поста о попытках улучшить производительность моих сайтов я рассматривал сжатие HTTP.Я читал о его настройке в IIS, но, похоже, это глобальная вещь для всех пулов приложений IIS, возможно, мне не разрешат это делать, поскольку на нем также запущен другой сайт.Затем я увидел некоторый код, который нужно поместить в global.asax, чтобы добиться того же самого для каждого веб-сайта.

Смотрите Здесь http://www.stardeveloper.com/articles/display.html?article=2007110401&page=1 ]1

Это так же хорошо, как настройка в IIS?Насколько драматичен эффект?Какие-нибудь известные проблемы?

Это было полезно?

Решение

Если вы будете продвигаться вперед с этим, я бы предложил реализовать HttpModule вместо global.asax.HttpModule позволяет вам отключить сжатие с помощью изменения конфигурации вместо перестройки и позволяет вам работать с вашей сборкой сжатия отдельно от вашего веб-приложения.

У Rich Crane здесь есть довольно приятный модуль 2.0: http://www.codeplex.com/httpcompression/ если вы хотите быстро встать и побежать.

Тот Самый выдувной упомянутый Стивеном Роджерсом проект также является HttpModule.

В остальном написать свой собственный довольно просто.HttpModule предоставляет вам те же события, что и global.asax - BeginRequest, EndRequest и более мелкие события, такие как PostReleaseRequestState и PreSendRequestHeaders, которые вам могут понадобиться для устранения всех недостатков.

Что касается IIS compression verus HttpModule, IIS определенно проще, поскольку вам не нужно возиться с еще одной сборкой.Я использовал оба метода в бизнес-приложениях, и оба они работают примерно одинаково при нагрузочном тестировании.Если IIS доступен, я бы посоветовал использовать его.

Для файлов HTML, JS, CSS и XML обычно используется сжатие от 60 до 80%.Имейте в виду, что большую часть вашей полезной нагрузки могут составлять изображения и мультимедийные объекты, которые гораздо сложнее сжать.

Другие советы

http://blowery.org/httpcompress/

Мы уже некоторое время используем эту утилиту сжатия на моей работе.Довольно неплохо.

Я думаю, что опция Global.asax будет полезна, например, если вы находитесь в среде общего хостинга, где у вас нет доступа к конфигурации IIS.

IIS 6 обеспечивает базовую поддержку сжатия, но если вы уже используете IIS 7, он предоставляет вам отличные Сжатие HTTP кроме того, вы можете определить, какие файлы будут сжиматься, на основе их типа MIME в ваших файлах конфигурации...

Это обеспечивает, по сути, то же самое, что и сжатие IIS - оба в конечном итоге отправляют ответ со сжатием gzip.Недавно я внедрил этот метод, и он последовательно уменьшает размер ответа на 60% без какого-либо влияния на производительность, о котором стоит беспокоиться.

Есть несколько возможных проблем.Во-первых, вам нужно быть осторожным с кэшированием выходных данных.Вам нужно использовать пользовательский параметр, чтобы убедиться, что разные версии кэшируются для запросов с разными заголовками Accept-Encoding.В противном случае, если сжатая версия будет кэширована, то все пользователи получат ее, независимо от того, сможет ли их браузер принять ее.

Во-вторых, GZipStream иногда усекает последние несколько символов из ответа, если вы используете Response .End или Response .Flush , потому что поток не закрывается до тех пор, пока не станет слишком поздно.Я не знаю ни одного хорошего решения этой проблемы.

Наконец, это приведет только к сжатию вашего HTML-кода.Любые файлы CSS или Javascript будут обслуживаться в обычном режиме.Вам нужно было бы, например, обслуживать эти файлы с помощью пользовательского IHttpHandler для их сжатия.

Есть проблемы с JavaScript и VBScript.Проблема с JavaScript была подтверждена в комментарии xxldaniel к ужасная статья о кодировании, и у меня были проблемы с VBScript (для автоматизации M $ Office), использующим JSON-подобный "Scripting.Dictionary" с запросом "Microsoft.XMLHTTP".

Вы можете попробовать mod_gzip модули.Он использует управляемую версию ZLib и обеспечивает высокую степень настройки.Синтаксис совместим с одноименным модулем Apache и даже расширен.Так, например, вы могли бы установить разный уровень сжатия для разных типов mime и так далее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top