Ускорение сайтов на фреймворке Yii2
Можно ли ускорить работу сайтов, созданных на фреймворке Yii2? Можно! Несмотря на то, что сам по себе фреймворк достаточно производительный, существует возможность сделать его еще лучше.
Первое – это работа с файлом .htaccess. В него необходимо внести следующие изменения:
# сжатие text, html, javascript, css, xml:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>
# кеш браузера
<ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 1 days"
# Включаем кэширование изображений и флэш на месяц
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 4 weeks"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/gif "access plus 43829 minutes"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
# Включаем кэширование css, javascript и текстовых файлов на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
# Включаем кэширование html и htm файлов на один день
ExpiresByType text/html "access plus 43200 seconds"
# Включаем кэширование xml файлов на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"
# Нестандартные шрифты сайта
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
</ifModule>
Второе – включаем кэширование в самом Фреймворке.
$config = [
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
'cachePath' => BASE_PATH . '/runtime/cache',
],
],
];
И третьим шагом настраиваем минификацию ресурсов. Для этого устанавливаем расширение yii2-minify-view и включаем его в конфигурационном файле.
'components' => [
'view' => [
'class' => '\rmrevin\yii\minify\View',
//'enableMinify' => !YII_DEBUG,
'web_path' => '@web',
'base_path' => '@webroot',
'minify_path' => '@webroot/minify_files',
'js_position' => [\yii\web\View::POS_END],
'force_charset' => 'UTF-8',
'expand_imports' => true,
'compress_output' => true,
'minifyCss' => true,
'concatCss' => true,
'compress_options' => ['extra' => true],
],
],
Этих трех шагов достаточно, что бы вывести производительность вашего сайта в зеленую зону PageSpeed Insights.