Сжатие ASP.NET - PullRequest
       30

Сжатие ASP.NET

3 голосов
/ 15 октября 2008

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

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

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

Ответы [ 6 ]

4 голосов
/ 15 октября 2008

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

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

Проект blowery , о котором упоминал Стивен Роджерс, также является HttpModule.

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

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

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

1 голос
/ 15 октября 2008

http://blowery.org/httpcompress/

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

0 голосов
/ 15 июля 2009

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

0 голосов
/ 23 марта 2009

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

0 голосов
/ 15 октября 2008

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

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

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

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

0 голосов
/ 15 октября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...