17 методов оптимизации производительности Laravel

Опубликовано: 2022-05-25

Вы ищете успешные способы ускорить работу Laravel во время работы над своим проектом? Вы пришли в нужное место!

Laravel — это популярный PHP-фреймворк с открытым исходным кодом, известный своей надежной безопасностью и простой, но сложной архитектурой кодирования. Это отличный выбор для создания передовых веб-приложений, способных приносить доход и продвигать бизнес вперед.

Тем не менее, производительность Laravel может снизиться, если вы не используете правильные методы оптимизации.

К счастью, существует множество способов максимизировать производительность Laravel. Мы составили список наиболее эффективных советов по оптимизации, которым вы можете следовать.


Ищете способы ускорить работу Laravel во время работы над вашим проектом? Не смотрите дальше... Нажмите, чтобы твитнуть

Почему так важна оптимизация производительности Laravel?

Разработчики должны уделять большое внимание производительности каждого приложения Laravel перед его выпуском, чтобы обеспечить его успех. Это одно из нескольких качеств, которыми должен обладать разработчик Laravel.

Оптимизация производительности Laravel с помощью настроек кода и команд может помочь в достижении этого, а также может оказать большое влияние на эффективность вашего приложения.

Является ли Laravel медленным?

Laravel — это быстрый фреймворк с множеством функций и функций (например, Memcache, поддержка баз данных, Redis и т. д.), помогающих повысить производительность. Laravel также позволяет специалистам по программному обеспечению создавать надежный код с относительно небольшими усилиями для достижения больших или малых целей проекта.

Поскольку данные хранятся в виде пар «ключ-значение» в оперативной памяти сервера, пользователи могут кэшировать столько, сколько им нужно, чтобы быстро и без проблем поддерживать свои приложения или сайты. По данным Google Trend, Laravel в настоящее время является самым популярным бэкэнд-инструментом для PHP.

Популярность Laravel в Google Trend
Популярность Laravel в Google (Источник изображения: Google Trend)

Недавно выпущенный Laravel 9 предлагает новые улучшения производительности. Например, он имеет минимальные спецификации PHP и требует Symphony 6.0, который работает на 20,65% быстрее на PHP 8.1. Новый дизайн команды route:list теперь упрощает представление сложных команд. Laravel 9 также включает в себя более эффективный интерфейс Query Builder и многие другие функции.

Тем не менее, некоторые факторы способствуют низкой производительности Laravel. Многие разработчики имеют плохие привычки, такие как загрузка большого количества тяжелых изображений, использование старых версий PHP, компиляция огромных объемов ненужных данных или пренебрежение удалением ненужных файлов из своих проектов.

Сложная архитектура Laravel MVC PHP и связанные с ней библиотеки обеспечивают превосходное сочетание безопасности, производительности и удобства использования. Вот почему полезно изучить некоторые приемы оптимизации Laravel для достижения более высокой производительности.

Скорость сайта имеет значение

Первые впечатления прочны для любого имиджа бренда. Скорость сайта — это первое впечатление, которое вы производите на посетителей вашего сайта. Знаете ли вы, что около 50% онлайн-клиентов покидают сайты, загрузка которых занимает более трех секунд?

Экран ноутбука со стрелкой теста скорости интернета
Скорость веб-сайта (Источник изображения: Cuso Magazine)

Скорость веб-сайта (также известная как производительность веб-сайта) относится к количеству времени, которое требуется браузеру для загрузки полнофункциональных веб-страниц с определенного веб-сайта. Следовательно, это оказывает прямое влияние на пользовательский опыт (UX) и коэффициент конверсии.

Производительность веб-сайта также влияет на ваш SEO-рейтинг в поисковых системах. Если несколько сайтов предлагают информацию, которую ищет ваш посетитель, более быстрые веб-страницы будут отображаться первыми. Если ваш сайт медленный, у него будет меньше шансов занять высокие позиции в результатах поиска Google.

Соответственно, вам следует потратить некоторое время на применение эффективных решений по оптимизации производительности веб-сайта.

Преимущества оптимизации производительности Laravel

Хотя вы, возможно, разработали фантастическое приложение Laravel, всегда есть возможности для улучшения, чтобы достичь совершенства. Повышение производительности Laravel имеет ряд преимуществ:

  • Ускорение роста бизнеса: улучшенная производительность Laravel означает более эффективный веб-сайт или приложение. В результате ваши шансы охватить более широкую аудиторию увеличиваются.
  • Более плавная среда разработки: советы по оптимизации производительности для Laravel, перечисленные ниже, помогают разработчикам экономить больше времени на написании кода, быстрее выполнять задачи и потреблять меньше ресурсов.
  • Улучшение обработки трафика: изучение того, как разумно использовать систему очередей Laravel, поможет вашему веб-сайту управлять количеством запросов по мере его роста и получения большого объема трафика.

Как измерить производительность Laravel

Вы потратили много времени и сил на то, чтобы ваше шикарное веб-приложение работало, но если оно будет медленным, никто не будет его использовать, и вы будете как медведь с больной головой. Вот здесь и начинается тестирование производительности Laravel.

Вы можете использовать различные инструменты для тестирования производительности вашего драгоценного творения. Давайте рассмотрим три из них.

1. Blackfire.io

Скриншот домашней страницы сайта Blackfire.io
Blackfire.io (Источник: Blackfire.io)

Blackfire.io — это интуитивно понятный профилировщик веб-приложений, который определяет основные пути, чтобы вы могли сосредоточиться на важных областях вашего PHP-приложения.

Он включает в себя несколько функций мониторинга производительности и отображает использование памяти, время процессора, а также ввод-вывод. Blackfire.io также позволяет вам сортировать вызовы функций и пути, чтобы увидеть, как работает ваше приложение Laravel.

2. Ларавель Сумерки

Логотип Laravel Dusk с изображением белого полумесяца слева и рук, печатающих на ноутбуке справа
Laravel Dusk (Источник: ELSNER)

Laravel Dusk позволяет протестировать ваше приложение и проверить, как оно работает с точки зрения пользователя. Вам не нужно устанавливать Selenium или JDK, чтобы использовать Dusk, так как он по умолчанию включает Chromedriver.

С помощью удобного для разработчиков API, такого как Dusk, вы можете автоматизировать тестирование браузера, устраняя необходимость в строгих процессах, требуемых отдельно для ChromeDriver и PHP WebDriver.

Кроме того, Dusk хранит снимки экрана и вывод консоли браузера неудачного теста, чтобы вы могли обнаружить любые ошибки.

3. Лоадфорж

Скриншот домашней страницы сайта LoadForge
LoadForge (Источник: LoadForge)

Разработанный специально для Laravel, LoadForge автоматически сканирует ваш веб-сайт, выявляет проблемы и предоставляет исчерпывающие графики вместе со статистикой производительности для каждой страницы.

В Chrome LoadForge позволяет вам фиксировать действия браузера и впоследствии преобразовывать их в тест LoadForge. Таким образом, вы сможете создать реалистичный пользовательский интерфейс, имитируя их вход в систему, навигацию по вашему веб-сайту или даже размещение заказов.

Как оптимизировать производительность Laravel (17 методов)

В этом разделе мы рассмотрим некоторые из лучших идей и тактик, которые помогут вам улучшить производительность Laravel.

1. Кэширование маршрута

Кэширование маршрутов — отличная функция, особенно для приложений с большим количеством конфигураций и маршрутов, разбросанных по коду. Это группа маршрутов, упакованных в одну команду, чтобы облегчить утомительную задачу составления маршрутов вручную. В результате страницы вашего сайта будут загружаться намного быстрее.

Кэширование маршрутов позволяет Laravel периодически извлекать маршруты из предварительно скомпилированного кеша вместо того, чтобы начинать с нуля для каждого нового пользователя.

Используйте эту команду для кэширования необходимых данных маршрутизации:

 php artisan route:cache

Имейте в виду, что срок действия кеша истекает, когда пользователь покидает ваш сайт. Также важно запускать эту команду кэширования маршрутов каждый раз после внесения структурных изменений (например, файлов маршрутов и конфигурации) на ваш веб-сайт, так как любые изменения, внесенные впоследствии, не вступят в силу.

Если вы хотите очистить кеш маршрута, выполните следующую команду:

 php artisan route:clear

2. Оптимизируйте Композитор

Laravel использует отдельный инструмент Composer для управления различными зависимостями. Когда вы первоначально устанавливаете Composer, он по умолчанию загружает зависимости dev в вашу систему.

Эти зависимости полезны для разработки веб-сайта. Но как только ваш сайт полностью заработает, они больше не нужны, и на самом деле они только замедлят его работу.

При использовании Composer для установки пакетов используйте параметры --no-dev и -o следующим образом, чтобы удалить зависимости dev:

 composer install --prefer-dist --no-dev -o

Эта команда позволяет Composer создать каталог для оптимизации автозагрузчика и повышения производительности. Он просто запрашивает получение и упаковку официального дистрибутива без каких-либо зависимостей от разработчиков.

Будьте осторожны, чтобы не устранить какие-либо зависимости во время выполнения. Это может поставить под угрозу производительность вашего сайта или даже привести к его сбою.

3. Уменьшите количество автоматически загружаемых сервисов

Цель Laravel — сделать процесс разработки максимально простым для разработчиков. Когда вы запускаете Laravel, например, он автоматически загружает большое количество поставщиков услуг, перечисленных в файле config/app.php , чтобы помочь вам быстро начать работу над вашим проектом.

Хотя это полезный шаг для Laravel, вам не нужно использовать все эти сервисы для создания приложения.

Возьмем, к примеру, REST API. Вам не требуются такие службы, как View Service Provider или Session Service Provider. Кроме того, многие разработчики не следуют настройкам фреймворка по умолчанию. Вы можете просто отключить службы, которые не соответствуют вашим потребностям (например, поставщик услуг разбивки на страницы, поставщик услуг перевода, поставщик услуг аутентификации и т. д.).

Вы сможете повысить скорость своих приложений Laravel, применяя тот же принцип к другим приложениям. Просто убедитесь, что вы не удалили какие-либо важные службы, и перепроверьте все, прежде чем бросить молоток.

4. Эффективно используйте Artisan Commands и кэш

Artisan — это популярный инструмент командной строки, который поставляется с Laravel. Это позволяет разработчикам автоматически выполнять повторяющиеся и сложные задачи. Создатели веб-сайтов также могут использовать его для проведения тестов и генерации команд.

Умное использование команд Artisan может повысить производительность вашего приложения. Ниже мы перечислили несколько лучших команд кэширования, которые вы можете использовать.

Кэширование конфигурации

Cache config — отличная команда для увеличения скорости. Он компилирует все значения конфигурации вашего приложения в один файл, чтобы платформа могла загружаться быстрее. Все, что вам нужно, это запустить:

 php artisan config:cache

Обратите внимание, что вы не должны выполнять команду config cache во время локальной разработки. Это связано с тем, что в процессе разработки приложения может потребоваться частое изменение параметров конфигурации.

Чтобы очистить кэш конфигурации, выполните следующую команду:

 php artisan config:clear

Кэширование просмотров

Кэш представления — это еще один аспект приложения, который содержит кеш. Кэш представления хранит сгенерированные шаблоны Blade для увеличения скорости вашего проекта. Вы можете использовать приведенную ниже команду artisan, чтобы скомпилировать все представления вручную и оптимизировать производительность:

 php artisan view:cache

Не забудьте очистить кеш при загрузке нового кода; в противном случае Laravel будет использовать ваши старые представления, и вы потратите много времени на устранение неполадок. Запустите эту команду, чтобы очистить кеш представления:

 php artisan view:clear

Кэширование приложений

Это основной кеш в Laravel. Он сохраняет все данные, которые вы кэшируете вручную в своем приложении. Использование кеша Laravel — разумный подход к ускорению часто используемых данных и оптимизации производительности Laravel. Если вы используете теги или несколько хранилищ кеша, вы можете очищать только определенные элементы кеша.

Вот команда ремесленника для очистки кеша Laravel:

 php artisan cache:clear

Имейте в виду, что эта команда не удалит какой-либо маршрут, конфигурацию или кеш представления, расположенный в папке /bootstrap/cache/.

5. Сокращение использования пакетов

Поскольку это фреймворк с открытым исходным кодом и многочисленным сообществом, вполне естественно видеть все больше и больше выпущенных пакетов или новых версий существующих пакетов в Laravel. Вы можете свободно использовать их и их функции непосредственно в своем приложении.

Вы должны включить эти пакеты в файл composer.json . Впоследствии Laravel установит их вместе со своими зависимостями.

Тем не менее, есть несколько факторов, которые следует учитывать перед добавлением новых пакетов в какое-либо приложение. Например, они не все предназначены для одной и той же цели. Некоторые пакеты также созданы для выполнения широкого спектра функций.

Когда вы включаете пакеты с большим количеством зависимостей, размер приложения увеличивается, и в конечном итоге страдает его производительность. Вот почему очень важно внимательно изучить зависимости, прежде чем добавлять какой-либо пакет.

6. Обновите до последней версии PHP

Как и любой другой фрагмент кода или программного обеспечения, всегда лучше обновить версию PHP до самой последней версии.

Основной причиной использования последней версии PHP является безопасность. В течение двух лет каждый выпуск PHP получает исправления безопасности и исправления ошибок. Ваша система может оказаться под угрозой, если вы продолжите использовать более ранние версии, которые больше не поддерживаются.

Многие разработчики могут также не знать, что чем старше становится версия PHP, тем медленнее становится ее производительность. Для повышения эффективности текущий выпуск PHP имеет выдающиеся улучшения производительности, такие как более быстрое выполнение запросов, перечислений, волокон и кеша наследования.

Здесь, в Kinsta, мы используем последнюю основную версию PHP (PHP 8.1) для всех сред, чтобы пользователи могли воспользоваться широкими возможностями платформы и оптимизировать свои приложения для максимальной скорости и эффективности.

7. Используйте очереди

Перенос медленных задач в задание очереди — это простой метод, позволяющий быстро максимизировать скорость вашего приложения Laravel.

Иногда вам не нужна информация в пользовательском интерфейсе сразу. В этом случае такие задачи могут быть отложены и запущены позже в фоновом режиме отдельным процессом (например, отправка электронного письма). Это может значительно повысить производительность онлайн-запросов вашего приложения.

Пример использования очередей для отправки электронных писем (Источник изображения: GeekFlare)

Laravel поддерживает различные драйверы очередей, такие как IronMQ, Redis, Amazon SQS и Beanstalkd. Кроме того, он включает встроенный обработчик очереди, который можно запустить с помощью следующей команды:

 php artisan queue:work

Вы можете добавить новое задание в очередь, используя этот метод:

 Queue::push('SendEmail', array('message' => $message));

Используйте метод ниже через Carbon, если вы хотите отложить выполнение одного из заданий в очереди. Например, предположим, что вы хотите запланировать задание, которое отправляет электронное письмо клиенту через 10 минут после того, как он создаст учетную запись:

 $date = Carbon::now()->addMinutes(10); Queue::later($date, '[email protected]', array('message' => $message));

8. Используйте инструмент развертывания для обращения ко всем командам

Хорошо, мы понимаем, что это не просто совет по повышению производительности для Laravel, но это замечательная техника экономии времени для разработчиков, которая так же важна для повышения производительности.

Боретесь с простоями и проблемами WordPress? Kinsta — это решение для хостинга, предназначенное для экономии вашего времени! Ознакомьтесь с нашими возможностями

Deployer — это инструмент развертывания на основе PHP, который позволяет вам развертывать ваш код на разных серверах. Он включает в себя скрипты для популярных фреймворков, таких как Laravel, Symfony, Zend, Magento, CakePHP и других.

Если вы раньше не имели дело с Composer для администрирования зависимостей вашего проекта, вы быстро познакомитесь с Deployer. Используйте этот инструмент для автоматизации всех операций развертывания вашей машины, таких как запуск сервера, клонирование на удаленный сервер и мониторинг удаленного хоста.

У Deployer есть настройки для выполнения функций миграции, раздачи и оптимизации в приложениях Laravel с помощью одной команды:

 php deployer.phar deploy production

9. Используйте Lumen для небольших проектов

Бывают случаи, когда разработка небольшого приложения (например, мобильных или Angular-приложений) не требует использования полнофункционального фреймворка, такого как Laravel. В этом случае рассмотрите возможность использования Lumen.

Lumen — это микрофреймворк, разработанный тем же создателем Laravel. Как и более легкая версия Laravel, Lumen ориентирован на скорость и производительность микросервисов. Он требует минимальных настроек и альтернативных параметров маршрутизации при создании веб-приложений, что позволяет ускорить процесс разработки.

Например, Lumen может обрабатывать 100 запросов в секунду. Вы также можете интегрировать инструменты или пакеты от третьих лиц, чтобы получить новые функции. Более того, Lumen поддерживает все платформы и позволяет перейти на Laravel.

10. Используйте JIT-компилятор

PHP — это серверный язык, который требует интерпретаторов для перевода кода в байт-код, понятный компьютеру.

Этот процесс занимает много времени и потребляет много ресурсов. Вот почему программисты обращаются к механизмам сценариев, таким как Zend Engine, для выполнения подпрограмм C, которые должны повторяться каждый раз при выполнении приложения, что замедляет работу вашего приложения.

Ради эффективности разработчики используют JIT-компилятор, чтобы повторить эту процедуру только один раз. HHVM, который был изобретен и широко используется Facebook, является предпочтительным JIT-компилятором для Laravel. Его также используют Etsy, Wikipedia и десятки других сайтов.

11. Используйте жадную загрузку

Для приятного взаимодействия с базами данных Laravel предоставляет фантастический объектно-реляционный преобразователь (ORM) под названием Eloquent. Это позволяет вам связать таблицы и работать со всеми функциями CRUD в PHP в простом формате.

Когда вы извлекаете модели из базы данных, а затем выполняете любую обработку их отношений, данные отношений загружаются «лениво». Это означает, что данные не загружаются до тех пор, пока вы не получите доступ к взаимосвязи.

Вам потребуется выполнить N+1 запросов, чтобы найти ответ с отложенной загрузкой, как показано в следующем примере:

 $books = AppBook::all(); foreach ($books as $book) { echo $book->author->name; }

Чтобы оптимизировать производительность Laravel и решить проблему запросов N+1, Laravel может «нетерпеливо загружать» данные, как показано ниже:

 $books = AppBook::with('author')->get(); foreach ($books as $book) { echo $book->author->name; }

12. Сжимайте изображения

Изображения играют важную роль в дизайне сайта. Они необходимы для улучшения пользовательского опыта (UX) и повышения поискового рейтинга.

Среднее время загрузки веб-сайта составляет две секунды. Тяжелые изображения замедляют скорость загрузки сайта. Если у вас медленный веб-сайт, есть большая вероятность, что вы потеряете много посетителей.

Сжатие изображений минимизирует размер исходного изображения без ущерба для его качества, помогая оптимизировать скорость сайта. По этой причине Laravel предлагает удобные варианты сжатия фотографий, такие как TinyPNG, reSmush.it или ImageMin.

13. Используйте CDN

Использование сети доставки контента (CDN) действительно может оптимизировать производительность Laravel. Загружая статический контент с сервера CDN, а не напрямую с компьютера, на котором размещены ваши файлы, данные достигают вашей аудитории быстрее.

Другими словами, он кэширует самую последнюю версию вашего сайта в глобальной сети облачных серверов. Таким образом, даже если ваши посетители географически удалены от вас, они все равно смогут быстро получить доступ к вашему веб-сайту.

Kinsta CDN работает на платформе Cloudflare и предоставляется бесплатно. Это позволяет доставлять кешированные файлы вашего веб-сайта с вашего основного домена, а не с дополнительного домена CDN, повышая ваш SEO-рейтинг.

Kinsta CDN дополнительно помогает удалять нежелательные компоненты из файлов JavaScript (JS) и CSS. Это значительно сокращает время, необходимое для загрузки страниц вашего сайта, и уменьшает потребление полосы пропускания.

14. Минимизируйте код JS и CSS

Попробуйте повысить производительность Laravel, уменьшив файлы JavaScript и CSS, прежде чем приступить к процессу объединения ресурсов.

Этот шаг минимизации удаляет из вашего приложения любой ненужный код, такой как пробелы, комментарии и переименование переменных с использованием сокращенных имен. При необходимости вы можете изменить размер изображений для создания миниатюр.

В результате вы улучшите свой UX, а также уменьшите HTTP-вызовы.

15. Используйте объединение активов

Существует несколько инструментов для сжатия и объединения файлов, таких как Javascript и CSS, в один, например Laravel Mix и Laravel Packer.

Все приложения Laravel включают Laravel Mix по умолчанию. Это удобный API, используемый для создания сборок Webpack для ваших приложений PHP с использованием ряда распространенных препроцессоров JavaScript и CSS.

Предполагая, что вам требуется определенный набор форматов стилей для вашего файла приложения, вы можете ввести что-то вроде этого:

 mix.styles([ 'public/css/vendor/normalize.css', 'public/css/styles.css' ], 'public/css/all.css');

Теперь Laravel Mix автоматически сгенерирует файл all.css из файлов normalize.css и style.css . Таким образом, вместо того, чтобы получать каждую таблицу стилей отдельно, вы можете объединить их в один файл all.css.

Laravel Packer — это инструмент командной строки, который можно установить через Composer. Он позволяет сократить и объединить код JS и CSS. Однако его сложнее использовать, чем Laravel Mix.

Несмотря на то, что этот совет отлично подходит для повышения производительности Laravel, слияние большого количества файлов сделает его огромным и в конечном итоге даст противоположный эффект. Чтобы решить эту проблему, используйте Laravel Mix, чтобы уменьшить ваши файлы, выполнив эту команду:

 npm run prod

16. Ограничьте включенные библиотеки

Laravel дает вам свободу добавлять столько библиотек, сколько вы хотите. Хотя это замечательная функция, добавление множества библиотек сильно снижает производительность вашего приложения. Это также может повлиять на весь пользовательский опыт.

Поэтому крайне важно сканировать все данные библиотек, которые в настоящее время используются в коде. Вы можете найти эти библиотеки в config/app.php file . Изучая библиотеки, удалите те, которые, как вы знаете, вам больше не нужны.

Также неплохо просмотреть composer.json на наличие ненужных зависимостей.

17. Подумайте об использовании New Relic

New Relic — это инструмент управления производительностью приложений (APM), интегрированный разработчиками в свои приложения Laravel. Он используется для анализа и мониторинга статистики, отражающей их производительность, для оптимизации эффективности и предотвращения сбоев в режиме реального времени.

New Relic может помочь вам оценить ваш показатель Apdex и сравнить ваше приложение с конкурентами на рынке. Это также позволяет вам создавать политики предупреждений в зависимости от ваших критериев.

Если вы не хотите подписываться на стороннюю службу, вы можете использовать инструмент Kinsta APM. Это может помочь вам найти узкие места производительности PHP на вашем сайте WP без дополнительной оплаты.
Ознакомьтесь с этими лайфхаками, чтобы максимизировать производительность Laravel и подготовиться к работе над вашим следующим проектом . Нажмите, чтобы твитнуть

Резюме

Laravel — это быстрорастущий PHP-фреймворк, и существует множество руководств, доступных для всех пользователей, чтобы изучить Laravel, независимо от их уровня знаний.

Когда дело доходит до пользовательского опыта в цифровом мире, производительность является решающим фактором для создания сильного присутствия в Интернете. Неудивительно, что организации тратят больше времени и ресурсов на обеспечение высококачественного UX.

Если вы разработчик Laravel, вы можете быть уверены, что, используя описанные выше методы, вы заметите значительное улучшение производительности и сможете поддерживать бесперебойную работу приложения.

Какие еще методы вы использовали для ускорения своих приложений Laravel? Дайте нам знать в комментариях ниже.