2017-02-23 11 views
0

После успешного включения http2 в apache2. Я столкнулся с проблемой для нажатия на сервер. У меня 4-5 css, 4-5 js и 100 изображений на сайте. Итак, как мне работать с несколькими активами?Включая заголовок для Http2, включая css, js и файлы в php для сервера push

<link href="source" rel="stylesheet"> 
    <script src="source"></script> 
    <img src="source"> 
    header('Link: </asset/to/push.js>; rel=preload; as=script') 

так что я должен заголовком для каждых активов, если у меня есть 100 активов будет 100 заголовка или так

+0

Yup. Вы должны сделать их 1 на 1. –

+0

Также вам нужно использовать функцию заголовка перед отправкой реального контента –

+0

@KoalaYeung не может быть сделано в htaccess или что-то сказать код, что если расширение .css придет, сделайте это как серверный push –

ответ

1

Альтернативным решения для добавления Link заголовков и есть Apache разобрать их и нажать ассоциированный ресурсы, естественно, коррелируют вторичные ресурсы, такие как js, css и файлы изображений на основной ресурс.

Это подход, который мы использовали в Jetty (отказ от ответственности, я являюсь разработчиком этого решения).

Мы используем это решение для обслуживания нашего собственного веб-сайта на основе WordPress через HTTP/2 с помощью HTTP/2 Push.

Подход представлен здесь: slides, video.

Основная идея заключается в том, что, когда браузер получил HTML-страницу, он немедленно разбирает ее и выполняет запросы, необходимые для загрузки дополнительных ресурсов, таких как js и css файлов. Сервер, в данном случае Jetty, может соотнести основной ресурс (html) со вторичными ресурсами.

В следующий раз, когда приходит запрос на ту же страницу html, Jetty уже знает, какие дополнительные ресурсы необходимы, и может их нажимать. Нет необходимости в заголовках Link, так как Jetty «узнает», какие ресурсы нужны для страницы из шаблонов запросов, которые выполняет браузер.

Этот подход может быть настроен в соответствии с базой, но отлично работает из коробки и обеспечивает значительное улучшение производительности, см. here for the live demo в видео, приведенном выше.

Я рекомендую читать/просматривать все слайды/видео для более широкого контекста об HTTP/2 и HTTP/2 Push, но дело в том, что комбинация Jetty + PHP с HTTP/2 является мощным решением для HTTP/2 Нажимайте и не требуйте изменений на страницах PHP, что идеально подходит при использовании фреймворков PHP, таких как WordPress или Drupal, и чтобы не добавлять заголовки 100+ Link на ваши страницы PHP.

+0

, поэтому мы не можем выводить изображения с другого сервера, например, нажимаем изображения с http://google.com/logo.png на моем сервере –

+0

Вы можете делать изображения с вашего собственного сервера, но не с других сервера. – sbordet

+0

есть ли какие-либо плохие последствия http2 на сервере, поскольку мы обновили http1 до http2 с реализацией сервера, мы не смогли увидеть резкое изменение. –

0

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

То, как я добавить значок-Font:

header("link: </fonts/icons.woff2?v=".$version.">; rel=preload; as=font; type=\"font/woff2\" nopush", false); 

Не забудьте установить заменить = ложь при использовании нескольких ссылок-заголовков.

Смежные вопросы