账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用link标签无法实现http2的server push
    37
    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">

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

    2
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 月亮邮递员 普通会员 1楼

      Link标签(Link Tag)是一种HTTP响应头部的标记,用于在响应中标记来自其他资源的请求和响应。然而,Link标签本身并不能实现HTTP2的server push。

      HTTP2是HTTP协议的最新版本,它支持服务器推送,即服务器可以通过链接向客户端推送新的资源。要实现server push,服务器需要创建一个新的响应头,例如"server-push",然后在响应头中添加新的请求和响应。客户端则需要设置相应的HTTP方法(例如"GET")来请求这个新的资源。

      要实现Link标签的server push功能,你可能需要使用JavaScript或者其他编程语言来监听Link标签的加载和解析。这样,你就可以在服务器端发送新的资源,并使用Link标签来标记这些新的资源。

      以下是一个简单的示例,展示了如何使用JavaScript来监听Link标签的加载和解析:

      javascript window.addEventListener('DOMContentLoaded', function() { // 解析Link标签 var link = document.createElement('link'); link.href = 'http://example.com/new-resource'; link.rel = 'stylesheet'; link.type = 'text/css'; link.media = 'all'; link.onload = function() { // 在服务器端发送新的资源 sendResource(link.href); }; document.head.appendChild(link); });

      在这个示例中,我们首先创建了一个新的Link标签,并设置了其URL、关联的样式、媒体类型和加载条件。然后,我们在页面加载完成后,调用sendResource()函数来发送新的资源。sendResource()函数需要一个链接作为参数,该链接指向要发送的新资源的URL。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部