9 стъпки за оптимизиране на YII

Типичната инсталация на Yii уеб рамката не използва много от механизмите, които могат да направят вашето приложение значително по-бързо. Нека да разгледаме пропускателната способност на блог приложението (един от примерите за Yii) в стандартната дистрибуция.

За да анализираме пропускателната способност, ще използваме инструмента Apache Benchmark:

# 30 заявки в секунда се издават от сървъра при стандартна инсталация на Yii

Скромен сървър с 512 MB RAM с едно ядро ​​ще може да издържи 30 заявки в секунда. Този показател може да бъде значително подобрен.

Клиентска оптимизация

Оптимизирането на приложение от страна на браузъра може да увеличи скоростта му няколко пъти. Ето откъде трябва да започнете.

1. Gzip компресия

трябва

Уверете се, че вашето приложение има активирано компресиране на текстови данни. Това ще намали размера на визуализираните страници няколко пъти. В Nginx компресията е активирана по следния начин:

Пълната конфигурация на Nginx за Yii приложения можете да видите тук.

2. Кеширане от страна на клиента

трябва

Кеширането на статични файлове в браузъра ще даде осезаема печалба в скоростта на сайта за посетителите. Броят на заявките от посетителя към сървъра значително ще намалее. Понякога това може да увеличи скоростта на сайта няколко пъти. В допълнение, кеширането на клиента ще намали натоварването на сървъра.

В Nginx това е активирано по следния начин:

# Активиране на кеширане от страна на клиента за статични файлове

Тъй като CSS/JS файловете могат да се променят, ние ще използваме статична техника за създаване на версии, за да управляваме кеша от страна на клиента. За CSS:

# CSS версии за контрол на кеша на браузъра

За версия на Javascript използвайте метода scriptMap():

# Javascript версии за управление на кеша на браузъра

3. Минимизиране истатично залепване

трябва

Няколко CSS файла са множество HTTP заявки. Много по-добре е да имате един CSS файл, за да не се налага клиентът да прави много заявки. Същото важи и за Javascript. За да използвате това в Yii, трябва да използвате компонент за минимизиране на трета страна (като YUI компресор) и да пренапишете зареждащия се JS/CSS файл в HTML.

минимизиране

Първо, всички Javascript файлове трябва да бъдат "залепени" в един all.js файл. След това минимизирайте с YUI компресора:

Ние правим същото за CSS - във all.css:

Сега трябва да заредите необходимите файлове в HTML:

# Заредете минимизирани JS/CSS файлове

Имайте предвид, че тази процедура за минимизиране трябва да се извършва след всяка промяна в Javascript или CSS. Но няма нужда да го използвате в среда за разработка. Следователно ще бъде удобно да вградите този процес на подготовка на статика в скрипт за разгръщане.

Оптимизация на сървъра

Оптимизацията на сървъра влияе върху скоростта на генериране на страници. Времето за генериране на страница обикновено не е толкова важно за посетителя. Но това определя броя на заявките, които сървърът може да обработи за единица време. Колкото по-добре е оптимизирано приложението, толкова повече клиенти може да обслужи сървърът.

4. PHP оптимизация

заявки

Основната и задължителна стъпка при оптимизирането на PHP, на който е написан Yii, е инсталирането на система за кеширане на байт код. Използвайте OpCache или APC съответно за версии на PHP, по-големи от или по-малки от 5.5. Кеширането на байт код спестява четене и компилиране на файлове. Това ще разтовари процесора и ще ускори приложението.

5. Изключете режима за отстраняване на грешки

заявки

Не забравяйте да деактивирате режима за отстраняване на грешки. Константата YII_DEBUG трябва да бъдезададено на false:

6. Опростен буутлоудър

може

За да активирате товарача yiilite.php, редактирайте index.php:

7. MySQL Заявки

страна

ActiveRecord може да създава много сложни заявки или поредица от тях. Анализирайте такива ситуации с помощта на профилиране. В открити случаи използвайте компонента DAO за изграждане на директни SQL заявки:

# MySQL заявка с индекси може да бъде много по-бърза от поредица от PHP заявки

8. Заявка за кеширане

оптимизиране

Тежкото кеширане на заявки е съществена част от оптимизирането на всяко приложение. Yii поддържа кеширане, базирано на Memcache. За да го активирате, трябва да посочите настройките на кеша във файла protected/config/main.php:

Сега можем да използваме метода cache(), за да кешираме всяка заявка:

# Кеширайте заявката към модела Post за 60 секунди

9. Кеширане на страници

Кеширането на страници е един от най-мощните начини за ускоряване на уебсайтовете. Тази техника работи добре за сайтове, които не се променят често (напр. блогове/новини/магазини). За да кеширате страници в Yii, трябва да промените манипулатора filters() в контролера:

# Кешира страниците на този контролер за 60 секунди

В допълнение, Yii ви позволява да посочите параметър, с уникалната стойност на който ще бъдат записани данните. Например, да приемем, че искаме да съхраняваме кеша отделно за всяка публикация в блога. След това трябва да използвате параметъра GET ># Caches pages отделно за всяка стойност в параметъра GET ID

Нека тестваме отново приложението:

# Виждаме намаляване на времето за генериране на страница с 10 пъти

Скоростта на работа и броят на обработените заявки в секунда се различават с порядък към по-добро. Основното увеличение напроизводителността доведе до кеширане на страници.

Освен това рейтингът за оптимизация на клиента се увеличи до 93 / 100. Добро ниво за повечето сайтове.

Най-важните

Оптимизирането на приложение на платформата Yii може да увеличи скоростта му няколко пъти. Използвайте оптимизация от страна на клиента, за да увеличите скоростта за вашите посетители. Оптимизацията на сървъра ще ви позволи да обслужвате повече посетители, без да купувате по-скъпи сървъри.

Оптимизация на уеб сайт клиент

Бързо генериране на данни за MySQL таблици

Тествайте заявки онлайн с hurl.it

Оптимизация на JPEG изображения

PNG онлайн оптимизация

Минимизиране на HTML

Анализ на натоварването на процесора

MySQL инструмент за горещо архивиране

5 начина да използвате отложено зареждане за оптимизация

Методи за оптимизация на уебсайтове от страна на браузъра

Избор на формат на изображението и тип компресия

Анализ на бавни PHP скриптове с XHprof

Проследяване на скоростта на страницата в Google Analytics

Проверка на Mysql, работещ под натоварване на Sysbench

Кеширане на динамични страници със SSI

Какво означава високо натоварване и какво да правим с него?