Простая интеграция HTTP/2 Server Push с помощью Laravel Middleware


enter image description here
Как мы все знаем, технологии сменяются быстро, и если вы не оглядываетесь вокруг, вы можете упустить что-то новое. HTTP/2 является одной из таких технологий, до доклада Бена Рэмси на Лараконе я и понятия о ней не имел.
Вы можете найти его доклад с презентацией здесь, а отдельная презентация находится на его сайте. Больше всего меня поразило то, с какой легкостью можно использовать server push или предзагрузку. Вы просто посылаете специальный “Link” заголовок всем активным страницам, а затем, если его поддерживают браузер и сервер, сеть начинает работать более эффективно.

Во время доклада Бен привёл пример использования этой функции в Laravel:
return response($content, $status)
->header('Link', '; rel=preload; as=style', false)
->header('Link', '; rel=preload; as=script', false);
Конечно, делать предзагрузку таким образом для каждого ассета в проекте - затея так себе. К счастью, нам доступно аж целых два пакета в Laravel, которые могут автоматически делать это через Middleware.

Первый пакет создал Том Шлик, а второй - Джейкоб Беннетт. Оба пакета в основном делают то же самое, но каждый интегрируется по разному.
Том сделал автоматическую подгрузку ресурсов в файле elixir’a /build/rev-manifest.json. Для добавления ресурсов необходимо использовать следующую конструкцию:
pushStyle($pathOfCssFile);
pushScript($pathOfJsFile);
pushImage($pathOfImageFile);

Джейкоб пошёл другим путём и еще больше автоматизировал процесс - его пакет автоматически сканирует DOM и автоматически добавляет заголовки для любого скрипта, стиля или изображения.

Какой из них вам выбрать будет зависеть от вашего проекта и ваших предпочтений. Пакет Джейкоба можно установить и забыть о нём, но он каждый раз сканирует DOM, чтобы найти все ассеты. Пакет Тома потребует больше усилий на настройку, но тем самым позволяет контролировать все аспекты своей работы.

Если вы хотите улучшить производительность вашего приложения Laravel - обязательно попробуйте этот способ.

Оригинальная статья