После успешного включения http2 в apache2. Я столкнулся с проблемой для толчка сервера. У меня есть 4-5 CSS, 4-5 JS и 100 изображений на сайте. Так как бы я работал с несколькими активами?
<link href="source" rel="stylesheet">
<script src="source"></script>
<img src="source">
header('Link: </asset/to/push.js>; rel=preload; as=script')
поэтому я должен заголовок для каждого актива, если у меня есть 100 активов, будет 100 заголовок или около того
Альтернативное решение для добавления Link
заголовки и Apache анализируют их и выдвигают связанные ресурсы, это естественно коррелировать вторичные ресурсы, такие как js
, css
и файлы изображений на первичный ресурс.
Это подход, который мы использовали в Jetty (отказ от ответственности, я являюсь разработчиком этого решения).
Мы используем это решение для обслуживания нашего собственного веб-сайта на основе WordPress через HTTP / 2 с HTTP / 2 Push.
Подход представлен здесь: слайды, видео.
Основная идея заключается в том, что когда браузер получает страницу HTML, он сразу же анализирует ее и выполняет запросы, необходимые для загрузки вторичных ресурсов, таких как js
а также css
файлы.
Сервер, в данном случае Jetty, может соотнести основной ресурс ( html
) с вторичными ресурсами.
В следующий раз просьба о том же html
страница приходит, Jetty уже знает, какие вторичные ресурсы необходимы, и может выдвинуть их.
Там нет необходимости Link
заголовки, поскольку Jetty «узнает», какие ресурсы нужны странице, из шаблонов запросов, которые выполняет браузер.
Этот подход может быть точно настроен на основе к основе, но отлично работает из коробки и обеспечивает значительное улучшение производительности, см. здесь для живого демо в видео, связанном выше.
Я рекомендую прочитать / просмотреть все слайды / видео для более широкого контекста о HTTP / 2 и HTTP / 2 Push, но суть в том, что комбинация Jetty + PHP с HTTP / 2 является мощным решением для HTTP / 2 Push и требует без изменений на страницах PHP — что идеально при использовании PHP-фреймворков, таких как WordPress или Drupal, и избегать добавления 100+ Link
заголовки для ваших страниц PHP.
Просто вставьте то, что действительно нужно, рано, иначе вы можете вообще не получить никакого выигрыша в производительности.
Вот как я могу добавить Icon-Font:
header("link: </fonts/icons.woff2?v=".$version.">; rel=preload; as=font; type=\"font/woff2\" nopush", false);
Не забудьте установить replace = false при использовании нескольких заголовков ссылок.