Pagespeed: теперь и для Nginx.
Google представили модуль ngx_pagespeed для Nginx, предназначенный для автоматической оптимизации сайта с целью увеличения отзывчивости и пропускной способности при отдаче контента. Стоит отметить, что этот модуль был доступен только для Apache, но ситуация исправляется. Модуль имеет статус бета-версии, однако это не помешало некоторым крупным компаниям начать использовать его у себя.
Модуль обеспечивает поддержку около 40 фильтров оптимизации web-страниц и связанных ресурсов (CSS, JavaScript, файлы изображений). Оптимизация производится прозрачно и не требует изменения содержимого сайта. Фильтры можно сгруппировать по категориям:
- оптимизация кэширования на стороне клиента;
- уменьшение времени приема-передачи (round-trip time);
- уменьшение расходов связанных с запросами на передачу;
- уменьшение размера отдаваемых данных;
- оптимизация рендеринга на стороне браузера;
- и другие не менее интересные фильтры.
Например, реализованы такие методы, как оптимизация и сжатие изображений, уменьшение разрешения изображений (если не совпадают фактическое разрешение и указанное теге IMG), удаление избыточных данных из JavaScript-кода и CSS, удаление лишних HTML-тэгов, объединение нескольких JavaScript/CSS-файлов, оптимизация использования заголовков Expires, Cache-Control и Last-Modified, предварительные DNS-запросы.
Установка модуля выполняется весьма безболезненно, нужно собрать nginx с включенным модулем, внести некоторые правки в конфигурацию и запустить Nginx. Для tengine и вовсе не нужно ничего пересобирать, модуль собирается как shared-библиотека и подгружается динамически.
Конфигурация модуля может быть прописана в секция http или server. В примере приведенном ниже, модуль включен для отдельного сервера.
server {
listen 80;
server_name .staging.dev.ru;
root /var/www/staging.dev.ru/current;
access_log /var/log/nginx/staging.dev.ru-.access.log main;
# pagespeed
pagespeed on;
# memcached storage
pagespeed MemcachedThreads 1;
pagespeed MemcachedServers "172.31.26.47:11211";
# file cache
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# filters
pagespeed RewriteLevel CoreFilters;
pagespeed EnableFilters collapse_whitespace,remove_comments,extend_cache,outline_css,outline_javascript,combine_css,insert_dns_prefetch;
# temporary workaround that ensures requests for pagespeed
# optimized resources go to the pagespeed handler.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { }
location ~ "^/ngx_pagespeed_static/" { allow 127.0.0.1; deny all; }
location ~ "^/ngx_pagespeed_beacon$; { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# filters
pagespeed RewriteLevel CoreFilters;
pagespeed EnableFilters collapse_whitespace,remove_comments,extend_cache,outline_css,outline_javascript,combine_css,insert_dns_prefetch;
# temporary workaround that ensures requests for pagespeed
# optimized resources go to the pagespeed handler.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { }
location ~ "^/ngx_pagespeed_static/" { allow 127.0.0.1; deny all; }
location ~ "^/ngx_pagespeed_beacon$; { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }
}
Кроме того есть возможность с помощью Google Analytics провести анализ насколько Pagespeed влияет на отдачу страниц. Для этого нужно включить экспериментальный режим и определить доли запросов для которых будет включен Pagespeed, а для которых - выключен. Результаты будут отражены в GoogleAnalytics.
# show half the users an optimized site, half the regular site
pagespeed RunExperiment on;
pagespeed AnalyticsID UA-XXXXXXXXXX-1;
pagespeed ExperimentVariable 1;
pagespeed ExperimentSpec "id=1;percent=50;level=CoreFilters;enabled=collapse_whitespace,remove_comments;";
pagespeed ExperimentSpec "id=2;percent=50";
pagespeed RunExperiment on;
pagespeed AnalyticsID UA-XXXXXXXXXX-1;
pagespeed ExperimentVariable 1;
pagespeed ExperimentSpec "id=1;percent=50;level=CoreFilters;enabled=collapse_whitespace,remove_comments;";
pagespeed ExperimentSpec "id=2;percent=50";
Статистика работы модуля доступна по /ngx_pagespeed_statistics (определяется через location).
Вот так вот!
Вот так вот!
На главную "Virtualizing Linux"
Комментариев нет:
Отправить комментарий