使用nginx优化前端资源
强缓存
1 | if ($request_uri ~* .(js|css)$) { |
适用场景
所有的js和css打包的时候都使用hash唯一标识
原理
- 浏览器使用Cache-Control做缓存控制,
max-age=31536000,immutable告诉浏览器可以缓存,下次加载资源浏览器先从本地缓存拿,返回200(from memory cache)从内存或者200(from dist cache)从本地 - 前端打包时候改变的文件使用hash标识,只有文件改变才修改hash
拓展
- 缓存控制策略:使用webpack的
optimization里的splitChunks把公共的、不常变化的库提取出来,这样通过强缓存,可以让依赖于该库的界面只需要加载少量资源 - webpack的hash策略
- Expires和Cache-control的区别
Expires 如:Thu, 01 Dec 2019 16:00:00 GMT
表示资源的具体过期时间,过期了就得向服务端发请求,指定的是一个时间,可能存在服务器资源和电脑本地时间不同步的问题。
Cache-control,指定从请求的时间开始,允许获取的响应被重用的最长时间(秒)
若俩者同时存在Expires则被Cache-Control的max-age覆盖
gzip
1 | gzip on; # 开启gzip |
适用场景
几乎所有,但是照片等不适合gzip,会变得更大。gzip_min_length 1k;这个配置最好要开,太小的资源gzip后可能比原来大
原理
优化
gzip会消耗服务器性能,而以nginx为例,它会先搜寻.gz文件并返回,所以我们只要提前压缩好放在服务器中,可以减少一步服务器压缩的过程,使用compression-webpack-plugin即可完成
好文推荐
评论
评论插件加载失败
正在加载评论插件