Pull to refresh

Comments 37

Все ваши проблемы решаются очень просто: используйте Apache. :) Тогда сами сможете выбирать, что и как сжимать. И даже выключать сжатие контента для посетителей со старыми браузерами, которые сжатие не поддерживают.
Спасибо огромное. Замечательная статья. К сожалению, не могу плюсануть.
У меня второй способ работал со странностями. На сервере для разработки все работало, но после переноса приложения на сервер хостера (Parking) сжатие само-собой отключилось. Причем, предположение, что сжатие не работает из-за того, что сервер съедает заголовки, отпало, так как после удаления условий проблема осталась. А их техподдержка внятного ответа так и не дала.
Надо будет попробовать третий вариант (первый, сами понимаете, недоступен), хотя, по сути-то он ничем не отличается.

Кстати, можно третий вариант реализовать по-другому: сделать какой-нибудь GZipCompressedPage : Page и переопределить в нем, скажем, метод ProcessRequest, где и будет подключаться сжатие. Так мы избавимся от:
1). лишнего кода в Page_Load()
2). гарантируем, что в Response никто ничего не запишет (ProcessRequest вызывается до всех событий)
3). Можем подключать сжатие, просто изменяя в Codebehind класс-родитель, не меняя код.
Хм. Единственное что могу предположить, что по каким-то причинам в вашем случае Application_BeginRequest просто не выполнялся. Или проверяли? Других вариантов пока даже не представляю...

Да, хороший вариант, предлагаю попробывать и выложить сюда в виде статьи, заодно поделитесь заработало ли на паркинге?
проверял, в том-то и дело, что все выполнялось. Правда, код вызывался не по BeginRequest, а по PreSendRequestHeaders, но сомневаюсь, что это меняет дело.

Статью может попробую на выходных написать, если получится. У меня сейчас одна большая статья под названием «диплом» пишется, плюс еще работать надо :)
Использую сжатие первым способом, но ещё с правкой метабазы IIS. Настраивается все достаточно гибко, если знать, что крутить, так же можно и для отдельных сайтов задавать настройки. В общем отдал предпочтение IIS для этой задачи, пока не жалуюсь, да и при размещении новых сайтов не задумываешься о том, что нужно что-то ещё прикрутить.
Да, я наверняка тоже бы остановился бы на первом варианте и не искал бы ничего другого, но обстоятельства так сложились, что пришлось покопаться.
Тоже хотел добавить, что можно еще пошаманить с настройками в IIS.
Плюс ко всему еще есть неплохой уже реализованный модуль - одно время я им пользовался.
http://www.codeproject.com/KB/aspnet/htt…
похоже, хорошая вещь, спасибо, обязательно покручу
а теперь чем пользуешься?
Статья, как минимум, интересна, ну а максимум решает каждый для себя.
а тебе не было бы интересно написать статейку по этим двум компонентам?
я бы сам с удовольствием почитал
У blowery ошибки есть, работу с хедерами переписать пришлось. А в общем, достаточно успешно используем модифицированную версию в нескольких проектах.
Спасибо большое за ссылки, мне понравился второй вариант - реализация через HttpModule. Возник один вопрос - сжатие CSS и JS файлов. В web.config добавил еще 2 ContentTypes: Value="application/x-javascript" и Value="text/css". При дебаге в студии сжатие происходит на ура, когда стараюсь работать через IIS, сжимает только text/html. Возникали ли такие проблемы у вас или нет?
Ну так конечно :)
ASP.NET обрабатывает только свои расширения - aspx, axd, asmx и прочее.
Надо в IIS выставить, чтобы js и css обрабатывались asp.net-ом. Вот только есть ли смысл?
IIS сам умеет сжимать статику.
А если у вас динамические скрипты, то их лучше отдавать через *.axd.
UFO landed and left these words here
А Вы уверены, что под lighthttpd можно запустить asp.net?
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
Вообще это пример «интеграции от которой невозможно отказаться» :) Выбирая отличный .Net, Вы вынуждены использовать Windows (некоторые не очень видят его на сервере, хотя бы из-за клиентский червей) и IIS (который сильно проигрывает другим веб-серверам).
Это к евангелистам .Net. Они обратят кого угодно.
Эм.. А в современном приложении вы много насчитаете статических элементов, которые "нада" сжимать? CSS + JS? Сколько на этом можно сэкономить, если эти элементы зачатую кешируются для всех страниц сайта и грузятся по сути вообще один раз.

Нормально динамический контент жмется, не у всех выделенки, поэтому это достаточно актуально. И на выделенке в общем-то оно все равно быстрее грузится сжатым. Да и на хабре уже несколько раз обсуждалось на реальных тестах полезность сжатия.
UFO landed and left these words here
Я не отрицаю, что CSS+JS нужно сжимать. IIS со статическим контентом поступает именно так как вы говорите, при первом обращении сжимает и ложит в директорию на диск.

Хабр - это просто достаточно старая версия сайта. Возьмите ту же автокадабру. Там сжатие работает и очень даже никому не мешает, а только помогает?
Для примера ещё несколько "посещаемых" ресурсов: google, корреспондент (поссылкам потыкайте, это не прямые на сайт, а на анализ использования компрессии в них).

Утверждать, что из-за gzip увеличивается нагрузка на сервер в 10 раз, ну не смешите. Вы просто похожи сейчас на человека, который никогда сам не пытался применить эту технологию, но перед этим прочитал пару "неправильных" статей. У меня на сервере все жмется и никаких жалоб я не слышал по этому поводу. После небольшой оптимизации одного из сайтов друг на диалапе просто в восторге был от того, как быстро все работает.

В общем как-то неубедительно это все звучит с вашей стороны. Больше чем уверен, что "раз в 10" — это только что придуманая цифра.
Кстати, я правильно понимаю, что если я хочу сжимать JS и CSS файлы, но только для одной папки, а не глобально, то я не смогу это сделать в IIS?
Вообще.. не совсем ясно, зачем так делать. Однако, можно копать в сторону сохранения таких файлов в ресурсах сборки и настройки сжатия обращений *.axd для приложения. Но я могу ошибаться.
Кеширование стоит как раз только CSS и JS, потому что они не изменяются. Но вообще вопрос бы конечно же про гибкость настроек ;)
Я понял про то, что надо только статику. Не понял, про ", но только для одной папки, "/ А если хочется особой гибкости, так что мешает редактировать метабазу вручную? Вот там, как раз, много чего можно изменить да подкрутить.
Да, всё правильно. Стандартно IIS этого не делает.
Мы используем Blowery.HttpCompress, и дополнительно прописываем ему что сжимать, а что нет (это делается в web.config)
Вопрос можно? Тестировали вы третий случай в ситуации использования Microsoft ISA Server? У меня почему-то в этом случае он показал свою полную неработоспособность и даже падение в ошибку при HttpContext.Current.Request.Headers[«Accept-Encoding»] (Request был пуст).
Only those users with full accounts are able to leave comments. Log in, please.