Скорость Yii приложения

0)Оптимизируем систему (отк. IPv6, SSD, disable ufw,разнесем БД и FastPHP по разным хостам)
1) Кэширование всех статических файлов в кеш-прокси сервере.
2) Кэширование файлов в браузере пользователя — еще один способ ускорить загрузку вашего yii сайта. Вот то, что вам нужно прописать в .htaccess:
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.
3) Кэширование запросов в БД:
'db'=>array(
...
            'enableSchemaCache' => true,
            'schemaCacheDuration' => 3600,
            'schemaCache' => 'cache',
...
4) Отключим логинг(в пределах разумного конечноже), профайлинг и отладку.
5) Включим хранение сессий в памяти Redis (сам Redis установите отдельно - там очень просто всё):
return [
...
'components'=>[
...
        'session' => [
            'class' => 'yii\redis\Session',
            'redis' => [
                'hostname' => 'localhost',
                'port' => 6379,
                'database' => 0,
            ],
            'name' => 'advanced-frontend',// name of the session cookie on the frontend
            'timeout' => 1200,
            'cookieParams' => [
                'path' => '/',
            ],
        ],
...
];
6) Переключим PHP на opcache кеширование и настроим его.
7) Оптимизируем gzip для http протокола на уровне HTTPсервера.
8) Оптимизируем jpeg и gif картинки с yii - сайта.
9) Оптимизируем запросы к БД.
10) Ускорение времени загрузки за счет включения в .htaccess сжатия файлов
Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:
AddOutputFilterByType DEFLATE text/html
Для сжатия текстовых файлов используйте:
AddOutputFilterByType DEFLATE text/plain
Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|font|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
11) Отказаться на критически медленных роутах от моделей ActiveRecords на DAO.
12) Перейти к фасаду фабрикам из PDO или же из mysqli функций.
13) Очищать таблицы от неактуальных записей (например записи из прошлого периода для оперативной аналитики).
14) Оптимизируем массив в YiiBase.php предварительной загрузки классов фреймворка и запуск в консоли 'build autoload' для обновления массива.
15) Используем сервер БД, в дальнейшем проксируем запросы к БД на чтения, строим и чиним индексы, оптимизируем стораджи.
16) Ну и наконец перейдем к переносу логики отображения на клиента и заварим API-шки:)
17) php composer.phar update --optimize-autoloader (отключить автозагрузку на массив загрузок)
18) Google уже в помощь: https://developers.google.com/speed/docs/insights/rules#
19) В index.php отключим обработчик ошибок: 2
20) поднимаем tmpfs для файлов базы:
mount -t tmpfs -o size=5G tmpfs /var/lib/mysql (с запасом в 2 раза больше чем весит база)
...
// Отключение обработчика ошибок Yii2
define('YII_ENABLE_ERROR_HANDLER', false);
...
21)Конфиги сервера - переместить в файл httpd.conf настройки с .htaсcess
--------

Комментариев нет :

Отправить комментарий

Благодарю за ваше участие!