Прискорюємо Wordpress

    image
 
Wordpress в стандартній установці досить повільний. За замовчуванням движок не використовує деякі можливості сучасного Веба для значного свого прискорення. Існує ціла купа плагінів для оптимізації Wordpress'a. Давайте наведемо в них порядок і проведемо капітальну оптимізацію.
 
 
Перш ніж приступити, подивимося, що показує гола установка Wordpress по <a href="http://highload.com.ua/post/Google+Pagespeed+-+%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7+%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%BE%D0%B9+%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8">Pagespeed :
 
 image
 
Результат 76 з 100 досить низький. Подивимося, наскільки можна збільшити цей показник.
 
 

Серверна частина

 
Nginx
Якщо Ви ще не використовуєте Nginx, пора переїхати на нього. Просте і потужне рішення. Конфігурація для роботи з підтримкою permalinks і кешування статики:
 
 
server {
        server_name wp.com;
        root /var/www/wp; # путь к WP
        index index.php;

        location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe$
                access_log off;
                log_not_found off;
                expires max; # кеширование статики
        }

        location / {
                try_files $uri $uri/ /index.php?$args; # permalinks
        }

        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

 
 
PHP APC
Якщо у Вас немає якихось особливих причин, за якими Ви не можете встановити APC, включайте його обов'язково. Перевіряємо наявність APC (у відповідь отримаємо список налаштувань APC):
 
 
php -i | grep apc

 
 
Тюнінг Mysql
Wordpress використовує InnoDB, а це значить ми можемо істотно збільшити продуктивність MySQL, подстроив ряд параметрів (файл my.cnf) під наше залізо:
 
Розмір буфера InnoDB краще поставити в половину доступної оперативної пам'яті:
 
 
innodb_buffer_pool_size = 256M

 
Не забуваємо включити кешування MySQL:
 
 
query_cache_size = 32M
query_cache_limit = 1M

 
Більш <a href="http://highload.com.ua/post/%D0%9A%D0%B0%D0%BA+%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C+MySQL+%D0%B4%D0%BB%D1%8F+Wordpress%3F">расширенная настройка MySQL для Wordpress.
 
 

Кеширование

Це найбільш важливий пункт. Кешування може дати значне прискорення сайту і економію ресурсів сервера. Для наочності будемо використовувати <a href="http://highload.com.ua/post/AB+-+%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8+%D0%BD%D0%B0+%D1%81%D0%B0%D0%B9%D1%82">ab від Apache . Перевіримо стандартну установку Wordpress без кешування. Запити направляємо через локальну мережу, тому затримку нічого, крім самого Wordpress'a не створює:
 
 
ab -c 10 -n 500 http://wordpress/

 
Отримуємо середній час на запит близько 50мс:
 
 
Total transferred:      4183000 bytes
HTML transferred:       4074500 bytes
Requests per second:    17.62 [#/sec] (mean)
Time per request:       567.421 [ms] (mean)
Time per request:       56.742 [ms] (mean, across all concurrent requests)
Transfer rate:          143.98 [Kbytes/sec] received

 
Хром показує середнє очікування відповіді на рівні 150мс (сервер знаходиться в Нідерландах):
 
 image
 
 
WP Super Cache
 Цей плагін дозволяє включити кешування буквально в одну дію. Крім стандартних налаштувань, він містить велику кількість параметрів для тюнінга кеша. Качаємо плагін, активуємо його в панелі управління і включаємо кеш:
 
 image
 
З включеним WP Super Cache отримуємо зменшення середнього часу на запит у 25 разів (!):
 
 
Total transferred:      4293500 bytes
HTML transferred:       4146500 bytes
Requests per second:    499.01 [#/sec] (mean)
Time per request:       20.040 [ms] (mean)
Time per request:       2.004 [ms] (mean, across all concurrent requests)
Transfer rate:          4184.61 [Kbytes/sec] received

 
Cреднее очікування відповіді в хром зменшилася в 3 рази:
 
 image
 
В якості серверної альтернативи WP Super Cache можна використовувати <a href="http://highload.com.ua/post/%D0%9A%D0%B0%D0%BA+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+varnish+%D0%B4%D0%BB%D1%8F+wordpress%3F">Varnish . Він дозволяє знизити час на обробку запиту ще майже на порядок, але саме рішення менш гнучке (добре підійде для блогів без елементів динаміки).
 
 

Стилі, скрипти та картинки

 
Мініфікація і стиснення
Мініфікація CSS / JS може заощадити 10… 15% їх розміру. Для включення мініфікаціі статики є модуль <a href="http://highload.com.ua/post/WP+minify+-+%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+JS%2FCSS+%D0%B4%D0%BB%D1%8F+Wordpress">WP Minify . Качайте, активуйте і модуль почне працювати.
 
 
Оптимізація картинок
Картинки можуть становити дуже велику частину загального розміру сторінки. Lossless стиск картинок може заощадити 30… 40% їх розміру. Це вміє робити модуль EWWW Image Optimizer . Для його роботи знадобиться встановити imagemagick і бібліотеку gd:
 
 
apt-get install imagemagick php5-gd

 
 

Хороші практики та досвід

 
     
  • Найкраще вибирати VPS для хостингу Wordpress. На Shared хостингу багато чого з описаного вище зробити неможливо. Крім цього, VPS зараз досить дешевий.
  •  
  • Перевіряйте теми за допомогою Pagespeed перед використанням
  •  
  • Очищайте кошик
  •  
  • Видаляйте старі ревізії постів
  •  
  • Видаляйте спам-коментарі
  •  
  • Вимикайте трекбеки в моменти, коли все стає зовсім повільно
  •  
  • Роздавайте RSS через feedburner
  •  
 
 

В результаті

У нас вийшло голу установку Wordpress розігнати майже в 100 раз за часом генерації сторінки (ми включили Varnish) і збільшити показник по Pagespeed з 76 до 93:
 
 image
 
 

Корисні інструменти та ресурси

 Профайлер P3 покаже безліч вузьких місць Вашої поточної установки Wordpress. Зручний інтерактивний <a href="http://highload.com.ua/post/%D0%A7%D0%B5%D0%BA%D0%BB%D0%B8%D1%81%D1%82+%D0%BF%D0%BE+%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8+%D0%B8+%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D1%8E+Wordpress">чеклист по оптимізації Wordpress дозволить не тримати все в голові, але нічого не упустити.
 
До речі, аналіз sevenpercentcatherine.wordpress.com (хоститься на wordpress.com) набирає 83 з 100 по Pagespeed. З проблем — ні мініфікаціі і занадто великий відповідь від сервера (350мс).
 
Діліться своїм досвідом та інструментарієм прискорення Wordpress'a в коментарях.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.