http2 与 http1 的主要区别
在于以下几点:
- http2 使用一小块一小块的二进制帧传输
- http2 文件可以设置优先级
- http2 header 部分会被压缩
- http2 服务端可以主动推送文件
服务端配置
nginx 配置
http2 要求服务器支持 https,在之前的文章《HTTPS服务器配置》中已经介绍了怎么配置 https,下面给一个比较常用的 nginx http2 配置
1 | # http 跳转到 https |
PHP 服务端推送
推送文件是要经常改动的,但我们又不希望经常改动 nginx 配置文件,这时候可以通过后端程序实现。做法是在 http 头部添加 link 字段:
Link: </styles.css>; rel=preload; as=style Link: </example.png>; rel=preload; as=image
对应的 PHP 代码是:
1 |
|
相应 nginx 配置添加
1 | server { |
参考资料:
nginx容器教程:http://www.ruanyifeng.com/blog/2018/02/nginx-docker.html
How To Set Up Nginx with HTTP/2 Support on Ubuntu 16.04:https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-with-http-2-support-on-ubuntu-16-04
Using HTTP/2 Server Push with PHP:https://blog.cloudflare.com/using-http-2-server-push-with-php/
HTTP/2 服务器推送(Server Push)教程:http://www.ruanyifeng.com/blog/2018/03/http2_server_push.html