用link标签无法实现http2的server push

发布于 2022-09-11 20:35:40 字数 628 浏览 18 评论 0

服务器已经配置好:

server {
    # listen在原https配置文件基础上添加http2
    listen 443 ssl http2;
    # 添加一句http2_push_preload on表示开启server push功能
    http2_push_preload on;
    ……
}

并且用以下的方式(php)也成功了:

<?php
    header("link: </styles.css>; rel=preload; as=style", false);
    header("link: </script.js>; rel=preload; as=script", false);

但是据说还可以用link标签的方式来指定要推送的资源:

<link rel="preload" href="/styles.css" as="style">
<link rel="preload" href="/script.js" as="script">

但我一直没试成功这种方式,有人知道这是什么问题吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

变身佩奇 2022-09-18 20:35:40

两种写法的作用域不一样:

  • 写在header里面, nginx一眼就能看到
  • 而写在html里面, 这是给浏览器看的

已经输出了html内容, 这个时候浏览器已经可以自己解析link/script了, 干嘛还要用server push呢?

nginx能很容易获取到header, 却不容易解析html
所以, nginx后面需要有个能设置header的服务器, php或者其它语言的, 可以设置一个header, 然后nginx再根据header中的hints规则进行资源的push

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文