双端支持 gzip 优化网页加载
1. Nginx 打开 gzip 可以压缩文件,减少浏览器访问时需要下载的文件大小,从而加速网页打开
1 | # 在 nginx.conf server 中添加下面的配置即可 |
2. 由于这样压缩会占用服务器 cpu 资源,所以压缩可以由前端打包的时候来做
1 | // webpack 中配置 |
- 这样就可以打包生成
.js
的同时,生成压缩后的相应文件.js.gz
,一并传到服务器 - 虽然也可以只传
.gz
文件,但都上传更保险(为了要兼容不支持 gzip 的浏览器)
如果配合各类云使用
- build 之后上传至云
1
2yarn build-prod
yarn upload-static - 修改 webpack 中 output 路径
1
2
3output: {
publicPath: '//s.sls.upyun.net/asdf/',
},
Ngnix
中打开 gzip_static
,就可以优先使用已有的压缩文件,不用 Nginx
再压缩
需要安装 ngx_http_gzip_static_module
1 | gzip_static on; # 已有.gz文件则直接用,不需要再压缩 |
3. 项目中这么运用发现 gzip_static
不起作用
在配置完后,发现浏览器中返回的文件,带有 Content-Encoding: gzip
但大小和 Webpack
打包时的 .gz
文件不一致,猜想服务器返回的还是由 Nginx
压缩生成的文件。
原因是该项目中用了 proxy_pass
反代所以不支持 gzip_static
4. 就是只想上传 .gz
文件,不传原文件
1 | # 在 nginx.conf 中打开 |
即可不用上传压缩前的文件了