Ускоряем Wordpress: кеширование, CDN, Varnish Cache

Post on 10-Jul-2015

824 views 10 download

Transcript of Ускоряем Wordpress: кеширование, CDN, Varnish Cache

Ускоряем WordPress

Кеширование, CDN, Varnish Cache

Igor Sazonov (@tigusigalpa)

Wordpress Meetup Saint-Petersburg #4, 29.11.2014

Зачем нужно ускорять сайт?

Для пользователей: долгая загрузка сайта снижает лояльность

посетителей и не раздражает их

Готовность сайта к большому трафику

SEO: поисковики учитывают скорость загрузки сайта, это один из

важнейших факторов влияния на ранжирование сайта среди других!

Экономия денег: если Вы используете обычный shared-хостинг, а

нагрузка увеличивается, то Вас могут попросить перейти на более

дорогой тариф или выделенный сервер, что значительно дороже.

Нужно ли WordPress ускорение?

Обычная установка «голого» WordPress:

Способы ускорения сайтов и WP

Кеширование

Использование CDN для подгрузки на сайт открытых (open source)библиотек или своих файлов

Сжатие HTML и CSS-файлов, объединение беграундов в “sprite”

Увеличение ресурсов сервера (процессор, оперативная память). Смена хостинга

Оптимальная настройка сервера (Nginx, MySQL, Apache)

Увеличение количества серверов с помощью балансировщика нагрузок (только для очень больших проектов!)

Оптимизация кода и запросов к базе данных

Оптимизация js и CSS3-кода (только вручную)

Акселераторы PHP (opCode cache), Memcached, Varnish Cache

Удаление лишних плагинов (для сайтов на WordPress)

Content Delivery Network (CDN)

Если Ваш сайт использует открытые скрипты, такие как jQuery, Bootstrap, AngularJS итп, то желательно подключать их через внешние CDN-сети.

Например, ищем в Google: “jQuery CDN”Находим //ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js

Отсюда: https://developers.google.com/speed/libraries/devguide#jquery

Смысл: CDN-сети публичных скриптов обслуживаются мощными серверами, гарантирующими высокую скорость подгрузки скрипта на Ваш сайт. Вы можете также хранить и подгружать файлы сайта (загружаемые изображения, css-файлы итп на CDN, но за $€¥)

Самые известные CDN

Бесплатный хостинг открытых (open-source) библиотек:

Google: https://developers.google.com/speed/libraries/devguide

Яндекс: https://tech.yandex.ru/jslibs/

CDNjs: https://cdnjs.com/

Платные CDN с предоставлением бесплатного хостинга Open Source

MAXCDN: https://www.maxcdn.com/

CloudFlare: https://www.cloudflare.com/

Amazon CloudFront: http://aws.amazon.com/ru/cloudfront/

Пример переподключения скрипта через CDN

В function.php Вашего шаблона:

function change_jquery_to_cdn() {

wp_deregister_script( 'jquery' );

wp_enqueue_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js' );

}

add_action( 'wp_enqueue_scripts', 'change_jquery_to_cdn' );

Что получится в итоге

Кеширование. Типы

Кеширование запросов – кеширование результатов SQL-

запросов

Кеширование страницы – сохранение статического HTML-

кода (результата выполнения скриптов и запросов)

требуемой страницы

Браузерное кеширование – кеширование заголовков и

использование ресурсов на стороне клиента (пользователя)

Фрагментное кеширование – кеширование отдельных

частей страниц

Подробнее: http://codex.wordpress.org/WordPress_Optimization/Caching

Кеширование в WordPress

Несколько основных плагинов для кеширования

WP Super Cache https://wordpress.org/plugins/wp-super-cache/

W3 Total Cache https://wordpress.org/plugins/w3-total-cache/

WP Fastest Cache https://wordpress.org/plugins/wp-fastest-cache/

Замечание: дальнейшие тесты плагинов показывают их оптимизацию при

загрузке без кеша, отследить скорость с кешем на цифрах не удалось

WP Super Cache. Настройка

WP Super Cache. Первые рез-ты

W3 Total Cache. Настройка

W3 Total Cache. Первые рез-ты

WP Fastest Cache. Настройка

WP Fastest Cache. Результаты

Сравнительный анализ плагинов

WP Super Cache W3 Total Cache WP Fastest Cache

Удобство админки

Сложность

настройки

Результат

Популярность

Поддержка CDN

Поддержка видов

кеширования

Сжатие CSS, JS,

HTML

Функции WordPress для работы с кешем

Простейшие примеры

Настройка Nginx/etc/nginx/nginx.conf

worker_processes 8;

worker_connections 2048;

keepalive_timeout 30;

gzip on;

gzip_types text/css text/javascript application/x-javascript application/json text/xml;

gzip_min_length 500;

gzip_comp_level 5;

location ~ .(css|js|jp(e)?g|gif|png|swf|ico)$ {

expires 1y;

}

fastcgi_buffer_size 32k;

fastcgi_buffers 256 4k;

/etc/init.d/nginx

ulimit -n 65536

Настройка MySQL (InnoDB)

key_buffer = 256M

sort_buffer_size = 4M

read_buffer_size = 4M

innodb_buffer_pool_size = 256M

innodb_log_buffer_size = 8M

tmp_table_size = 32M

max_heap_table_size = 32M

table_cache = 128

thread_cache = 64

query_cache_type = 1

query_cache_limit = 1M

query_cache_size = 32M

Для мегапродвинутых: Балансировщик

Установка Varnish Cache

Удаление лишних плагинов

Спасибо за внимание!