HTTP2.0协议新增Sever Push实现服务器主动向客户端推送某些数据,当客户端需要时可以直接在本地缓存中进行获取。
推送实现
标识依赖资源
- 静态Link标签法
<link rel="preload" href="push.css" as="style">
- HTTP头表示法
push.css为资源地址,Link: <push.css>; rel=preload; as=style
rel=preload表明资源是预加载的,
as表明资源文件类型。另外,
nopush表示浏览器可能已经缓存该资源,服务端不需主动推送,只有浏览器检查到该资源没有缓存时,服务端才推送资源。Link: </app/script.js>; rel=preload; as=script; nopush
推送资源
- 客户端指定推送资源
资源url参数,如:
请求header头参数,如: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
- CDN节点指定推送资源
- 源站指定推送资源