HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: laravel, фреймворк, программирование на laravel, оптимизация производительности, кеш, opcache, jit-компилятор hhvm</p>
1 <p>Теги: laravel, фреймворк, программирование на laravel, оптимизация производительности, кеш, opcache, jit-компилятор hhvm</p>
2 <p>С момента выпуска<strong>Laravel</strong>(2011 год) фреймворк стал очень популярным, особенно при разработке бизнес-ориентированных приложений. У этого есть много причин. Одна из них - возможность оптимизации производительности и настройки своих приложений. Итак, давайте попробуем оптимизировать Laravel-приложение на продакшене.</p>
2 <p>С момента выпуска<strong>Laravel</strong>(2011 год) фреймворк стал очень популярным, особенно при разработке бизнес-ориентированных приложений. У этого есть много причин. Одна из них - возможность оптимизации производительности и настройки своих приложений. Итак, давайте попробуем оптимизировать Laravel-приложение на продакшене.</p>
3 <h2>Сервер</h2>
3 <h2>Сервер</h2>
4 <p>Предполагается, что Laravel уже установлен на сервер. Мои настройки: • Laravel 5.5; • PHP 7.1; • MYSQL.</p>
4 <p>Предполагается, что Laravel уже установлен на сервер. Мои настройки: • Laravel 5.5; • PHP 7.1; • MYSQL.</p>
5 <h2>Кеширование конфигурации</h2>
5 <h2>Кеширование конфигурации</h2>
6 <p>В Laravel есть хорошая команда artisan cache config. Она весьма полезна, если нужно повысить производительность. Использование:</p>
6 <p>В Laravel есть хорошая команда artisan cache config. Она весьма полезна, если нужно повысить производительность. Использование:</p>
7 <p>После запуска просто так менять файлы конфигурации не получится. Придётся обновлять кеш и выполнять эту команду повторно. Для очистки кеша конфигурации используйте:</p>
7 <p>После запуска просто так менять файлы конфигурации не получится. Придётся обновлять кеш и выполнять эту команду повторно. Для очистки кеша конфигурации используйте:</p>
8 <p>Чтобы дальше оптимизировать производительность, можно использовать<strong>OpCache</strong>для кеширования php-кода, поэтому компилировать его снова и снова вам уже не придётся.</p>
8 <p>Чтобы дальше оптимизировать производительность, можно использовать<strong>OpCache</strong>для кеширования php-кода, поэтому компилировать его снова и снова вам уже не придётся.</p>
9 <h2>Кеш маршрутизации</h2>
9 <h2>Кеш маршрутизации</h2>
10 <p><strong>Кеширование маршрутов</strong>- важнейшая часть оптимизация, особенно, когда маршрутов много. Кеш маршрутов - простой массив, повышающий производительность<strong>Laravel</strong>. Запустите эту команду:</p>
10 <p><strong>Кеширование маршрутов</strong>- важнейшая часть оптимизация, особенно, когда маршрутов много. Кеш маршрутов - простой массив, повышающий производительность<strong>Laravel</strong>. Запустите эту команду:</p>
11 <p>Не забывайте запускать команду всегда, когда вносите изменения в файл маршрутов либо добавляете новый маршрут. Чтобы очистить кеш, используйте:</p>
11 <p>Не забывайте запускать команду всегда, когда вносите изменения в файл маршрутов либо добавляете новый маршрут. Чтобы очистить кеш, используйте:</p>
12 <h2>Удаляем неиспользуемые сервисы</h2>
12 <h2>Удаляем неиспользуемые сервисы</h2>
13 <p>При оптимизации Laravel никогда не загружайте все службы из конфигурации. Очень важно отключать службы из файлов конфигурации, которые не используются.</p>
13 <p>При оптимизации Laravel никогда не загружайте все службы из конфигурации. Очень важно отключать службы из файлов конфигурации, которые не используются.</p>
14 <h2>Оптимизация автозагрузки Composer</h2>
14 <h2>Оптимизация автозагрузки Composer</h2>
15 <p>Composer нужен для сканирования приложения, чтобы создать однозначную ассоциацию классов и файлов в приложении. Команда:</p>
15 <p>Composer нужен для сканирования приложения, чтобы создать однозначную ассоциацию классов и файлов в приложении. Команда:</p>
16 <h2>Лимитируем подключаемые библиотеки</h2>
16 <h2>Лимитируем подключаемые библиотеки</h2>
17 <p>Важно просмотреть все библиотеки, вызываемые в коде. Если думаете, что можно решить задачу без библиотеки, лучше удалите её из<strong>config/app.php</strong>, что позволит ускорить Laravel.</p>
17 <p>Важно просмотреть все библиотеки, вызываемые в коде. Если думаете, что можно решить задачу без библиотеки, лучше удалите её из<strong>config/app.php</strong>, что позволит ускорить Laravel.</p>
18 <h2>JIT-компилятор</h2>
18 <h2>JIT-компилятор</h2>
19 <p>Преобразование PHP-кода в байт-код с последующим его выполнением при каждом запросе - очень ресурсоёмкий процесс. Поэтому, к примеру, для выполнения подпрограмм на C нужны такие посредники, как<strong>Zend Engine</strong>. Для Laravel-приложений рекомендуется использовать<strong>JIT-компилятор HHVM</strong>от Facebook.</p>
19 <p>Преобразование PHP-кода в байт-код с последующим его выполнением при каждом запросе - очень ресурсоёмкий процесс. Поэтому, к примеру, для выполнения подпрограмм на C нужны такие посредники, как<strong>Zend Engine</strong>. Для Laravel-приложений рекомендуется использовать<strong>JIT-компилятор HHVM</strong>от Facebook.</p>
20 <h2>Кеш результатов запросов</h2>
20 <h2>Кеш результатов запросов</h2>
21 <p>Прекрасный способ оптимизации - кеширование результатов наиболее часто используемых запросов:</p>
21 <p>Прекрасный способ оптимизации - кеширование результатов наиболее часто используемых запросов:</p>
22 $posts = Cache::remember('index.posts', 30, function() { return Post::with('comments', 'tags', 'author', 'seo')-&gt;whereHidden(0)-&gt;get(); });<h2>Используем "жадную" загрузку данных</h2>
22 $posts = Cache::remember('index.posts', 30, function() { return Post::with('comments', 'tags', 'author', 'seo')-&gt;whereHidden(0)-&gt;get(); });<h2>Используем "жадную" загрузку данных</h2>
23 <p>Если<strong>Eloquent</strong>использует "жадную" загрузку, в ответ на первоначальный запрос загружаются связанные объектные модели. Давайте сравним два вида загрузок:<strong>eager loading</strong>и<strong>lazy loading</strong>.</p>
23 <p>Если<strong>Eloquent</strong>использует "жадную" загрузку, в ответ на первоначальный запрос загружаются связанные объектные модели. Давайте сравним два вида загрузок:<strong>eager loading</strong>и<strong>lazy loading</strong>.</p>
24 <p>Запрос lazy loading выглядит так:</p>
24 <p>Запрос lazy loading выглядит так:</p>
25 $books = App\Book::all(); foreach ($books as $book) { echo $book-&gt;author-&gt;name;}<p>Запрос eager loading выглядит несколько иначе:</p>
25 $books = App\Book::all(); foreach ($books as $book) { echo $book-&gt;author-&gt;name;}<p>Запрос eager loading выглядит несколько иначе:</p>
26 $books = App\Book::with('author')-&gt;get(); foreach ($books as $book) { echo $book-&gt;author&gt;name;}<h2>Прекомпилирование ресурсов</h2>
26 $books = App\Book::with('author')-&gt;get(); foreach ($books as $book) { echo $book-&gt;author&gt;name;}<h2>Прекомпилирование ресурсов</h2>
27 <p>Как правило, разработчики помещают код во множестве отдельных файлов. Хоть это и позволяет делать код легкоуправляемым и чистым, но не способствует повышению производительности. Чтобы помочь программистам, создатели Laravel предлагают использовать<strong>ряд простых команд</strong>:</p>
27 <p>Как правило, разработчики помещают код во множестве отдельных файлов. Хоть это и позволяет делать код легкоуправляемым и чистым, но не способствует повышению производительности. Чтобы помочь программистам, создатели Laravel предлагают использовать<strong>ряд простых команд</strong>:</p>
28 php artisan optimize php artisan config:cache php artisan route:cache<p><a>Источник</a></p>
28 php artisan optimize php artisan config:cache php artisan route:cache<p><a>Источник</a></p>
29  
29