Розганяємо WordPress до швидкості світла

1 Тестуємо поточну швидкість
Щоб дізнатися чи змінилося щось після нашої оптимізації, не завадить заміряти для початку поточну швидкість завантаження сторінок блогу, щоб було з чим порівнювати. Є кілька інструментів, які допоможуть це зробити:
1.1 Pingdom
Pingdom проводить швидке та наочне тестування швидкості завантаження всіх елементів на сторінці та представляє результати у вигляді зручної діаграми, де можна подивитися, які елементи сайту завантажуються повільніше, ніж необхідно та інші проблемні області.

YSlow – плагін для Firefox, який вбудовується в, мабуть, найкращий плагін для веб-розробника, Firebug. Він аналізує понад 20 факторів, що впливають на швидкість роботи сайту та оцінює загальну продуктивність за 100-бальною системою, а кожен окремий елемент оцінкою від A до F.

1.3 Кількість запитів та час їх виконання
Вставивши невеликий шматок PHP коду, можна вивести у футер кількість запитів до БД та час, витрачений на їхнє виконання.
2 Web Hosting
Хочете вірте, хочете - ні, але веб-хостинг одна з найважливіших деталей, що впливають на продуктивність блогу. Не вдаючись у подробиці, ось дуже проста характеристика найпопулярніших типів хостингу, яка допоможе вам приблизно оцінити навантаження на сервер:
* Shared Hosting – на одному сервері можехоститися в середньому близько 100 осіб; * VPS – одному сервері може хоститися близько 20 людина; * Dedicated – сервер використовуватиметься лише вами.
Це, звичайно, не означає, що ви не зможете прискорити блог, що працює на віртуальному хостингу (Shared Hosting), проте варто пам'ятати – продуктивність тим вища, чим більші ресурси ми маємо у своєму розпорядженні.
Не останню роль грає також і географічне положення сервера, тому завжди потрібно приблизно представляти свою цільову аудиторію. Наприклад, якщо це українськомовні користувачі – не варто купувати американський хостинг тощо.
3 Встановлення та налаштування сервера
Переконайтеся, що навантаження, що планується, відповідає потужності сервера і він зможе з нею впоратися. Насамперед це залежатиме від обсягу оперативної пам'яті та процесора. Як правило, WordPress ставлять на Apache, але багато вдалих рішень існує і на базі інших http-серверів: nginx, lighttpd і т.д.
Не забудьте оновити до останньої версії PHP та Apache.
3.1 Вимкніть сервіси, що не використовуються.
Ви можете отримати більше доступної оперативної пам'яті, відключивши служби, що не використовуються, і оптимізувавши MySQL і Apache.
* Видаліть ClamD; * Налаштувати SpamD на використання лише 1 дочірнього процесу; * Видаліть Mailman, якщо, звичайно, ви не збираєтеся запускати поштовий сервіс.
3.2 MySQL Query Cache
Оскільки стабільність і швидкість WordPress досить сильно залежить від роботи БД, варто переконатися, що налаштуванняmy.cnf відповідають можливостям сервера. В першу чергу слід встановити налаштування кешування запитів, додавшиmy.cnf наступні рядки:
Щоб налаштування набули чинності, доведеться перезапустити сервіс MySQL сервіс.
3.3 Кешкомпілятора: XCache чи Eaccelerator?
Кеш компілятора збільшує продуктивність відкомпільованих скриптів на сервері, кешуючи їх – це допоможе скоротити час виконання PHP скриптів. Варто спробувати те й інше рішення, проте за результатами дослідів збільшення продуктивності при використанні Xcache на 5% вище, ніж з Eaccelerator.
3.4 Збільште максимальну кількість з'єднань на Apache
Збільшення максимальної кількості сполукhttpd.conf підвищить продуктивність, т.к. сервер зможе обробляти більше підключень за раз. Однак, слід змінювати цей параметр обережно, щоб не вичерпати весь обсяг оперативної пам'яті та не сповільнити роботу сервера, тому завжди тестуйте нові налаштування, перш ніж запускати їх у роботу. Встановимо, наприклад, 150 коннектів:
Не забудьте повернути сервіс Apache, щоб застосувати налаштування.
4 Оптимізація коду та графіки
Отже, сервер запрацював і тепер настав час пограти з кодом WordPress.
4.1 Вимкніть хотлінки
Кожного разу, коли ви використовуєте свій сервер для зберігання зображень, ви істотно більше використовуєте його ресурсів. Досить часто люди запозичують ваші зображення, ставлячи хотлінки на своїх серверах. Це не лише займає канал, а й створює певне навантаження на сервер. Додайте наступний код у.htaccess файл, замінившиexample.com на ім'я вашого домену, щоб вимкнути використання хотлінків:
4.2 Використовуйте зовнішній хостинг для зберігання зображень
Хостинг зображень на зовнішніх серверах допоможе значно зменшити навантаження на сервер. У прикладі нижче ви можете бачити зниження обсягу оперативної пам'яті, що використовується на одному з блогів після перенесення зображень на сервіс Amazon S3.

4.4 Javascript на початку сторінки
Часто трапляється так, що сайт починає завантажуватись повільно або взагалі зупиняється, т.к. інший ресурс, з якого викликається JavaScript (наприклад Digg badges, Tweetmeme і т.д.), не доступний або оффлайн. Щоб уникнути цього винесіть весь JavaScript в кінець сторінки, а те, що з якихось причин винести не вдалося - спробуйте укласти в iFrame.
4.5 Використовуйте кеш-браузер
Сам по собі кеш браузера, звичайно не зробить ваш блог швидше, проте допоможе знизити навантаження на сервер, кешуючи об'єкти, що часто завантажуються (стилі, елементи інтерфейсу і т.п.). Спробуйте вставити наступний код.htaccess файл:
Ви можете зменшити розмір сторінки, що завантажується, дозволивши браузеру приймати і передавати дані в стислому вигляді. Це також знизить завантаження каналу і кількість даних, що завантажуються. Наступний код у .htaccess може допомогти вам у цьому:
4.7 Використовуйте CDN для статичних файлів
Якщо зберігати всі зображення на одному і тому ж домені, то браузер чекатиме їх завантаження одного за іншим. Допустимо на сторінці їх у вас є 12 штук, якщо ви розділите їх між трьома піддоменами, вони завантажуватимуться одночасно з трьох «різних» джерел замість того, щоб завантажуватися браузером по черзі з одного. Можете спробувати перенести всі css & javascript файли наfiles.yoursite.com, а зображення та тимчасові файли наstatic.yoursite.com. Або ж просто використовувати CDN (Content Delivery Network) - велика мережа серверів, розташованих по всьому світу, які дозволять не тільки зберігати ваші файли на різних піддоменах, а значить завантажувати їх паралельно, але і доставляти користувачеві дані з найближчого до нього сервера. Все це дозволить завантажувати данінабагато швидше.
5 WordPress
У цій частині статті ми розглянемо прийоми для покращення продуктивності, які можна застосувати безпосередньо до WordPress.
5.1 Оновлення до останньої версії
Оновлення до нових версій дозволяють не тільки усувати виявлені вразливості, але і покращують продуктивність. Для прикладу в Wordpress 2.8 була суттєво оптимізована робота з БД.
5.2 Вимкніть Post Revisions
Щоб видалити збережені раніше ревізії тексту, виконайте наступний запит у PHPmyadmin:
5.3 Скоротіть кількість запитів
Заберіть непотрібні запити, щоб прискорити створення сторінки. Наприклад, наступний типовий код, що зустрічається у всіх темах для wordpress:
Ми запросто можемо переписати до:
Вже на два запити менше. Досить просто, чи не так?
6 WordPress Plugins
І наостанок пропоную до вашої уваги кілька плагінів, які можуть підвищити продуктивність wordpress. Як тільки все, описане вище, буде виконано, ці плагіни допоможуть досягти ще більш високої продуктивності.
WP Super Cache Це, мабуть, найкращий плагін до WordPress. WP Super Cache створює статичні html версії кожної сторінки та завантажує їх щоразу, обходячись тим самим без запитів до БД. Це значно збільшує швидкість завантаження сторінок та знижує навантаження на сервер. Строго рекомендується до встановлення.
PHP Speedy WP Ця плагін вирішує іншу проблему, зазначену в цій статті – видалення незаповненого простору в CSS & JavaScript. Однак є деякі проблеми сумісності цього плагіна з WP Super Cache, крім того, він довгий час вже не оновлювався, тому використовуйте на свій страх і ризик.
Optimize DB Плагін дозволяє оптимізуватитаблиці MySQL без допомоги PHPmyadmin.