Від автора: кожен поважаючий себе розробник переживає за долю «свого коду. Намагається зробити додаток як можна зручніше, швидше і підвищити його відмовостійкість. Але не завжди оптимізація PHP дозволить вам досягти цих висот.
Не лікуй руку, якщо кульгавий на ногу!
Пардон за ірландський народний афоризм! Але він в саме «яблучко» відображає всю суть проблеми. Найчастіше оптимізація коду не дозволить вам підвищити швидкодію створеного скрипта або ресурсу. А у випадку з PHP все вкрай ускладнюється з-за великої кількості факторів, вплинути на які ви (як розробник) просто не в силах.
Що стосується непідвладних явищ, то я маю на увазі швидкість інтернет-з’єднання, завантаженість сервера, налаштування ОС на клієнтській машині, потужність заліза ПК користувача. На всі ці складові ви не зможете вплинути. І в підсумку виходить, що проведена оптимізація PHP коду не дасть повноцінного результату.
Що залишається під владою веб-розробника:
Налаштування сервера – обмежено. Настройка параметрів через файл конфігурації Apache httpd.conf дозволяє задати кількість дочірніх процесів, таймаут з’єднання через сокет, обсяг буфера для виведення при з’єднанні TCP/IP, час простою та інші.
Налаштування ядра мови – через параметри, прописані в файлі php.ini. Дозволяє задати значення буферизації, змінити максимальний час виконання скриптів, обробку помилок, управління логами і інші настройки.
З допомогою PHP оптимізації зображень – про це пізніше. Оптимізація програмного коду – дозволяє «заощадити» ресурси і підвищити швидкодію.
Наприклад, потрібно знати, що echo працює швидше, ніж print. Виведення повідомлень про помилки після налагодження краще вимикати для економії ресурсів. Замість конкатенації рядків використовуйте echo. Об’єкти і методи класів (ООП) з’їдають багато пам’яті.
Робота з зображеннями
Я не прихильник обробки зображень на стороні сервера. Це також веде до витраті коштовних ресурсів, яких на хостингу завжди мало. Виходить, що економлячи на одному, ми даремно витрачаємо інші «запаси».
Більш оптимальним є варіант завантаження зображень на сторонній сервіс, звідки вони вже в оптимізованому вигляді підвантажуються в браузер користувача за заданою адресою. У Мережі таких сервісів безліч. Хочу назвати тільки кілька з них: kraken.io, TinyPNG
Як бачите, знання пошукової оптимізації на PHP для професійних розробників теж є важливим.
Крім цього PHP володіє власним вбудованим інструментарієм для «полегшення» зображень. Наприклад, функція imagecopyresampled (). Вона зменшує вагу контенту за рахунок змінення роздільної здатності і зміни розмірів малюнка. Приклад використання:
Що можна ще
Також не забувайте про застосування оптимізації клієнтської сторони за допомогою PHP. В якійсь мірі сервер може впливати на клієнтський браузер через Cache-Control, а також атрибути цього заголовка: post-check, max-age та інші.
Крім цього керувати станом кешу на клієнтській машині дозволяють заголовки Last-Modified і ETag. Для зміни кожного файлу вони встановлюють унікальний ідентифікатор. Завдяки чому сервер пересилає ресурси заново, а лише відповіді 304 статусом.
У статті ми не піднімали питання оптимізації за допомогою PHP-FPM. Але для його розгляду потрібна окрема стаття. А на сьогодні все. До наступної зустрічі!