Ускоряем wordpress: кеширование, cdn, varnish cache

26
Ускоряем WordPress Кеширование, CDN, Varnish Cache Igor Sazonov (@tigusigalpa) Wordpress Meetup Saint-Petersburg #4, 29.11.2014

Upload: igor-sazonov

Post on 10-Jul-2015

822 views

Category:

Software


10 download

TRANSCRIPT

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

Ускоряем WordPress

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

Igor Sazonov (@tigusigalpa)

Wordpress Meetup Saint-Petersburg #4, 29.11.2014

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кеширование

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

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

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

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

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

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

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

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

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

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

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, но за $€¥)

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

Самые известные 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/

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

Пример переподключения скрипта через 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' );

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

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

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

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

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

запросов

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

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

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

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

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

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

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

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

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

Кеширование в 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/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WP Super Cache W3 Total Cache WP Fastest Cache

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

Сложность

настройки

Результат

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

Поддержка CDN

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

кеширования

Сжатие CSS, JS,

HTML

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

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

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

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

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

Настройка 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

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

Настройка 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

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

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

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

Установка Varnish Cache

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

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

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

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