Ускоряем wordpress: кеширование, cdn, varnish cache
TRANSCRIPT
Ускоряем 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
Удаление лишних плагинов
Реально проверенные хостинги
Спасибо за внимание!