Компания Google представила (http://googledevelopers.blogspot.ru/2013/04/speed-up-your-si...) модуль ngx_pagespeed (https://developers.google.com/speed/pagespeed/ngx), в рамках которого подготовлен аналог для ранее развиваемого для http-сервера Apache модуля mod_pagespeed (http://www.modpagespeed.com/), предназначенного для автоматической оптимизации сайта с целью увеличения отзывчивости и пропускной способности при отдаче контента. Код ngx_pagespeed распространяется (https://github.com/pagespeed/ngx_pagespeed) под лицензией Apache.
Несмотря на то, что модуль позиционируется как бета-выпуск, он отмечается как готовый для внедрения, так как уже три месяца используется на нескольких сотнях сайтов и некоторыми хостинг-провайдерами. По данным (https://www.zippykid.com/2013/04/23/partnership-with-google-.../) провайдера ZippyKid, участвовавшего в начальном тестировании модуля и специализирующего на предоставлении хостинга для блогов на базе движка WordPress, использование ngx_pagespeed позволило уменьшить размер отдаваемых страниц на 75% и увеличить скорость отображения страниц на 50%.
Модулем поддерживается более 40 фильтров для оптимизации web-страниц и сопутствующих ресурсов, таких как CSS, JavaScript и файлов с изображениями. Оптимизация производится в полностью прозрачном режиме и не требует изменения содержимого сайта. Большинство из используемых в модуле методов направлены на увеличение эффективности кэширования на стороне клиента, сокращение числа запросов/ответов и уменьшение размера отдаваемых и принимаемых данных. Встроенные механизмы кэширования сводят к минимуму дополнительную нагрузку на сервер, возникающую в процессе работы модуля, минимизируя число случаев, требующих выполнения преобразований на лету. Например, реализованы такие методы, как оптимизация и сжатие изображений, уменьшение разрешения изображений (если не совпадают фактическое разрешение и указанное теге IMG), удаление избыточных данных из JavaScript-кода и CSS, удаление лишних HTML-тэгов, объединение нескольких JavaScript/CSS-файлов, оптимизация использования заголовков Expires, Cache-Control и Last-Modified.URL: http://googledevelopers.blogspot.ru/2013/04/speed-up-your-si...
Новость: http://www.opennet.me/opennews/art.shtml?num=36802
Это все очень клево, конечно, но что там с нагрузкой на сервер при использовании этого модуля? Не верю, что эти оптимизации в полтора-два раза халявные.
Очень кривой,
Местами память не высвобождается.
Прикрепленные библиотеки и парсеры от гугла весят порядка 500МБ
Будете смеяться, но это чудо за собой тащит в зависимостях половину хромиума. =)
> оптимизация и сжатие изображенийBMP/XPM что ли?
> уменьшение разрешения изображений (если не совпадают фактическое разрешение и указанное теге IMG)
первое что в голову пришло:
GET image.jpg HTTP/1.1 SIZE=120x80
интересное было бы расширение протокола НТТР???
Есть ещё кто-то, кто регулярно указывает размеры изображений в тэге IMG?> удаление избыточных данных из JavaScript-кода и CSS
это что, JavaScript-VM и браузер прямо в модуле "бегают"?
> удаление лишних HTML-тэгов
о да, сэкономишь кучу байтов.
А про самое главное, и ничего не сказано :D пробелы лишние то удаляет хоть?
лох это судьба (с)взять поставить и потестить не судьба видимо, опеннетный оналитег
ага, и заменяет " на '
модуль вообще то уже давно выпущен, просто он был в статусе альфа, а это первая бета, которую разработчики рекомендовали попробовать в продакшене
> Есть ещё кто-то, кто регулярно указывает размеры изображений в тэге IMG?Вообще-то, культурные люди - указывают. Чтобы броузер сразу знал размеры боксов и мог расставить контент как надо, а не перекраивать страницу каждый раз, когда подгружается очередная картинка.
> удаление лишних HTML-тэговэто может поломать javascript парсеры шаблонов ...
CSS группировка и в CSS перенос не реализован ??<div style="very big shit...."> -> group to css and replace to class or id
блин а чего же nginx не модульный как апач ? чтобы подцепить этот модуль нужно перекомпелироваь ngixn :(
http://www.opennet.me/opennews/art.shtml?num=36810
да действительно... ну почему
> http://www.opennet.me/opennews/art.shtml?num=36810
> да действительно... ну почемуВ форке Nginx под названием tengine есть такая фишка "Dynamic module loading support (DSO).You don't have to recompile Tengine when you want to add a new module."
Авторам этого форка в списке рассылки разработчики nginx доходчиво объяснили почему их реализация DSO полное г-но, на что китайцы ответили, что мол ну мы у себя пользуем и кое-как работает, а остальное нас не парит.
Если для них это работает, то почему бы и нет, тем более что альтернативы для нуждающихся в общем то и нет.
Только Игорь бы исправил это
Немного пиара :) http://repobuild.com там можно собрать Nginx под CentOS 5.x/6.x с любыми штатными параметрами + дополнительными модулямиnginx-upstream-fair
nginx-upload-progress-module
mod_zip
nginx-upload-modulenginx-rtmp-module-master
ngx_http_enhanced_memcached_module-master
memc-nginx-module
nginx-sla
auth-request-nginx-module
drizzle-nginx-module
echo-nginx-module
ngx_devel_kit
set-misc-nginx-module
encrypted-session-nginx-module
form-input-nginx-module
headers-more-nginx-module
iconv-nginx-module
ngx_postgres
rds-csv-nginx-module
rds-json-nginx-module
redis-nginx-module
redis2-nginx-module
srcache-nginx-module
xss-nginx-modulengx_http_limit_req_module - Взят с проекта tengine поддерживает множественные limit_req в одном location
nginx-push-stream
nginx_syslog
nginx-backtrace - Взят с проекта Tengine
nginx-http-concat - Взят с проекта Tengine
nginx-http-footer-filter - Взят с проекта Tengine
nginx-http-slice - Взят с проекта Tengine
nginx-http-sysguard - Взят с проекта Tengine
nginx-http-user-agent - Взят с проекта Tengine
Нас больше заботит поддержка debian
Если будет интерес собирать deb не проблема.
> уменьшение разрешения изображений (если не совпадают фактическое разрешение и указанное теге IMG)Интересно, как он узнает размеры картинки, если они указываются в ответе на другой запрос?
Тебе же сказали что этот модуль тянет за собой браузер хром и его обработчики :)
> Тебе же сказали что этот модуль тянет за собой браузер хром и
> его обработчики :)Это да, но он должен сначала обработать запрос на html, запомнить все img оттуда, а потом обработать запрос на img.
И ещё не факт, что запросы на html и img придут на один и тот же фронтенд.
>> Тебе же сказали что этот модуль тянет за собой браузер хром и
>> его обработчики :)
> Это да, но он должен сначала обработать запрос на html, запомнить все
> img оттуда, а потом обработать запрос на img.
> И ещё не факт, что запросы на html и img придут на
> один и тот же фронтенд.Препроцессор есть + много кеша на диске оставляет.
что-то у них видимо совсем линуксOS not supported: FreeBSD
>>> OS not supported: FreeBSDpsol библиотека не поддерживает BSD