服务器搭建QQ消息推送,专栏 - 腾讯WeTest-All Test in WeTest

1、标识依赖资源

W3C候选推荐标准(https://www.w3.org/TR/preload/)建议了依赖资源的两种做法:文件内标签和HTTP头部携带, 表示该资源后续会被使用, 可以预请求, 关键字preload修饰这个资源, 写法如下:

a) 静态Link标签法:

b) HTTP头表示法:

Link: ; rel=preload; as=style

其中rel表明了资源是预加载的,as表明了资源的文件类型。另外,link还可以用nopush修饰,表示浏览器可能已经有该资源缓存,指示有推送能力的服务端不主动推送资源,只有当浏览器先检查到没有缓存,才去指示服务端推送资源,nopush格式写成:

Link: ; rel=preload; as=script;nopush。

2、推送资源

用户访问CDN,主要包括直接访问的边缘节点, 若干中间节点和客户源站,路径中的每层都可以对请求做分析,预测可能的依赖资源,通过插入静态标签或者增加响应头部返回给浏览器。 CDN的推送主要采用头部携带推送信息。

a) 客户端指定推送资源

客户端通过url或者请求头说明需要的资源url,写法如下:

Url:http://http2push.gtimg.com/simple_push.html?req-push=simple_push.js

或者:

GET /simple_push.html HTTP/1.1

Host: http2push.gtimg.com

User-Agent: curl/7.49.1

Accept: */*

X-Push-Url: simple_push.js

b) CDN节点指定推送资源

CDN节点针对请求资源配置推送资源, 基础配置如下:

location ~ “/simple_push.html$” {

http2_server_push_url /simple_push.js

}

c) 源站指定推送资源

通过增加响应头link通知客户端或者CDN节点,后续希望推送的依赖资源,中间具有    推送功能的节点(如CDN节点)可以基于此信息进行资源请求与推送.

3、功能实现

图7所示为CDN的Server Push架构, 基本流程如下:

a) 用户请求到达服务器之后,依赖资源预测模块根据请求头或者配置预测浏览器需要的资源,该推送资源url必须是和主请求是同一host。如果不属于同一host,服务器拒绝推送资源。

b) 服务器通过PUSH_PROMISE桢告诉浏览器准备推送的资源路径,该信息在原主请求流上发送,必须优先主请求响应发送,否则浏览器可能在推送资源到达前已经发起了依赖资源请求,造成重复和浪费.

c) 依赖资源请求模块构造和主请求一样的请求信息,在本地或后端服务器请求推送资源,并主动创建新的HTTP/2请求流,后续服务器就可以发送资源响应,推送资源响应在服务端创建的流上传输,主页面响应在原始流传输。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值