vue cli 加载速度优化

2019-12-16  本文已影响0人  最爱是荔枝

问题

vue cli2,打包完后比较大,每次访问都要请求的静态文件都要等好久,需要优化下静态文件等大小。

解决思路

vuecli 2.x自带了分析工具, 分析工具:webpack-bundle-analyzer(请自行搜索如何安装)

只要运行 npm run build --report

给出的结果如下图

stat:
这是文件的“输入”大小,在任何转换(如缩小)之前。
它被称为“stat-size”,因为它是从Webpack的stats对象获得的。


stat.png

parsed:
这是文件的“输出”大小。如果您使用的是像uglify这样的Webpack插件,那么这个值将反映代码的小型化。


parsed.png

gzipped:
这是通过gzip压缩运行解析的包/模块的大小。


gzipped.png 由此可见,gzip 压缩后的包最小,前提是浏览器支持gzip gzip.png

服务器是nginx,没有用过配置压缩项,网上找了下,配置如下

屏幕快照 2019-12-13 下午2.12.23.png 配置完成后,重启niginx,清除浏览器缓存再次访问,发现并没有gzip压缩后的文件 屏幕快照 .png

再查看nginx配置gzip 发现有static静态压缩,才会访问gzip文件,描述如下:
Nginx的动态压缩是对每个请求先压缩再输出,这样造成虚拟机浪费了很多cpu,解决这个问题可以利用nginx模块Gzip Precompression,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩,对于不支持gzip的请求则读取原文件。

    gzip_static  on;

a) 文件可以使用 gzip 命令来进行压缩,或任何其他兼容的命令。建议压缩文件和原始文件的修改日期和时间保持一致。

b) gzip_static配置优先级高于gzip。

c) 开启nginx_static后,对于任何文件都会先查找是否有对应的gz文件。

d) gzip_types设置对gzip_static无效。
到此nginx配置完成,现在需要生成gz文件,需要用到compression-webpack-plugin这个gem,配置完成后,在打包。


静态文件.png

结果

到现在前端静态文件也已经打包好,nginx也配置好了,清空浏览器缓存,再次访问,请求结果如下


请求大小.png)
请求大小1.png

可以看到传输的是压缩后的gz文件,有2m变到600多k,对于支持gz的浏览器,传输量变成了原来的1/3

参考文章:
Nginx gzip static静态压缩
compression-webpack-plugin Gzip压缩

上一篇下一篇

猜你喜欢

热点阅读