说到前端优化,一般都知道gzip
可以进行网络资源压缩, 降低资源在网络中的传输大小。
那要如何开启gzip呢? 网上一搜,大部分是类似的结果,先是在webpack
中配置CompressionPlugin
和TerserPlugin
插件,在打包时就进行一次压缩,并生成对应的gz
后缀文件,然后是nginx
开启gzip
功能。
上面的说法错误了吗?没有,但是貌似都忽略了一个地方,或者说,难道大部分人就没有这么一个疑问,webpack
打包时已经进行gzip
压缩了,那为什么还要再次开启nginx
的gzip
压缩呢?
经过反复的搜索查找,终于让我找到了答案,以下是自己的总结和理解:
nginx
分为实时gzip
和静态gzip
, 所谓实时gzip
就是无论你的静态资源有没有压缩,我都给你使用gzip
压缩一次,所谓静态gzip
,就是当你请求某个静态资源时,我先找下该静态资源有没有对应的gz
文件,如果有,那nginx
就直接使用gz
文件,而不再进行实时gzip压缩
, 从而减少了nginx
对cpu
的使用,加快了响应速度. 不过要使用静态gzip
必须要先启用nginx
的gzip_static
模块.
上面关于webpack gzip
和nginx gzip
的疑问解决了, 那么还有一个疑问,CompressionPlugin
已经给代码压缩一次了,那为什么还要进行一次gzip
压缩?
再次经过反复的搜索与测试,终于又让我找到了答案,以下是自己的总结和理解:
gzip
能在已经压缩的结果上,进一步进行压缩