在apache2中成功包含http2之后。我面临着服务器推送的问题。我有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个标头
发布于 2017-02-23 16:31:51
添加Link
头并让Apache解析它们并推送相关资源的另一种解决方案是自然地将辅助资源(如js
、css
和图像文件)与主资源相关联。
这是我们在Jetty中采取的方法(免责声明,我是该解决方案的实现者)。
我们使用这个解决方案来服务我们自己的网站,基于WordPress,通过HTTP/2和HTTP/2推送。
其基本思想是,当浏览器接收到一个超文本标记语言页面时,它立即对其进行解析,并执行下载js
和css
文件等辅助资源所需的请求。服务器(在本例中为Jetty )可以将主资源( html
)与辅助资源相关联。
下一次请求相同的html
页面时,Jetty已经知道所需的辅助资源是什么,并且可以推送它们。不需要Link
头,因为Jetty会从浏览器执行的请求模式中“学习”页面所需的资源。
这种方法可以在基础上进行微调,但开箱即用,并提供了显著的性能改进,请参阅上面链接的视频中的here for the live demo。
我推荐阅读/观看整个幻灯片/视频,了解更多关于HTTP/2和HTTP/2推送的内容,但重点是,Jetty + PHP和HTTP/2的组合是一个强大的HTTP/2推送解决方案,并且不需要更改PHP页面-这在使用WordPress或Drupal等PHP框架时非常完美,并且可以避免在您的PHP页面中添加100+ Link
头文件。
发布于 2017-03-27 17:23:19
只需尽早推送真正需要的内容,否则最终可能根本没有性能优势。
这就是我添加图标字体的方式:
header("link: </fonts/icons.woff2?v=".$version.">; rel=preload; as=font; type=\"font/woff2\" nopush", false);
当使用多个链接报头时,不要忘记设置replace=false。
https://stackoverflow.com/questions/42408641
复制相似问题