Страницы

Сохранить статью у себя в соцсети:

понедельник, 29 апреля 2013 г.

Pagespeed: for Nginx now.

Pagespeed: теперь и для Nginx.

Google представили модуль ngx_pagespeed для Nginx, предназначенный для автоматической оптимизации сайта с целью увеличения отзывчивости и пропускной способности при отдаче контента. Стоит отметить, что этот модуль был доступен только для Apache, но ситуация исправляется. Модуль имеет статус бета-версии, однако это не помешало некоторым крупным компаниям начать использовать его у себя.
ngx_pagespeed


Модуль обеспечивает поддержку около 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; }
}

Полный список фильтров и документация по ним доступна здесь.
Кроме того есть возможность с помощью 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";

Статистика работы модуля доступна по /ngx_pagespeed_statistics (определяется через location). 
Вот так вот! 
На главную "Virtualizing Linux"

Комментариев нет:

Отправить комментарий

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика