02.网络篇 1:webpack 性能调优与 Gzip 原理

2019-06-05  本文已影响0人  Fl_来看看

    内容出自前端性能优化原理与实践,我作为笔记简单记录下。
    01引言.一个老生常谈的面试问题

    看不懂下面的,看上面的连接

    优化如果从dns以及tcp连接下手,前端表示无能为力,(摊手脸),能做的有限,前端在网络层面优化的话最主要从http连接下手。

    那么如何优化呢?有两个方向:

    1:减少请求次数

    2:减少单次请求所花费的时间

    如何才能减少次数以及所花费时间?对资源进行压缩与合并。构建工具 webpack能帮我们完成

    构建工具 webpack是如何帮我们完成资源的压缩与合并从而减少请求以及时间?

从构建的角度出发:

以babel-loader为例:

    1.对loader进行 exclude

    2:开启缓存将转译结果缓存至文件系统,至少可以将 babel-loader 的工作效率提升两倍。只需要为 loader 增加相应的参数设定:loader:'babel-loader?cacheDirectory=true'

第三方库很庞大,以 node_modules 为代表,必须依赖但又太过庞大

    用Externals处理第三方库在一些情况下会引发重复打包的问题; CommonsChunkPlugin 每次构建时都会重新构建一次 vendor;

    推荐DllPlugin,基于 Windows 动态链接库(dll)的思想被创作出来的。它第三方库单独打包到一个文件中。这个依赖库不会跟着你的业务代码一起被重新打包,只有当依赖自身发生版本变化时才会重新打包

    不是很明白DllPlugin看下面的引用

    在用 Webpack 打包的时候,对于一些不经常更新的第三方库,比如 react,lodash,vue 我们希望能和自己的代码分离开,Webpack 社区有两种方案CommonsChunkPlugin和DLLPlugin

    对于 CommonsChunkPlugin,webpack 每次打包实际还是需要去处理这些第三方库,只是打包完之后,能把第三方库和我们自己的代码分开。而 DLLPlugin 则是能把第三方代码完全分离开,即每次只打包项目自身的代码。Dll这个概念是借鉴了Windows系统的dll,一个dll包,就是一个纯纯的依赖库,它本身不能运行,是用来给你的app引用的。

使用webpack的插件DllPlugin加快打包速度

DllPlugin和DllReferencePlugin提供分离包的方式可以大大提高构建时间性能。主要思想在于,将一些不做修改的依赖文件,提前打包,这样我们开发代码发布的时候就不需要再对这部分代码进行打包。从而节省了打包时间。

DllPlugin提升webpack打包速度

    DllPlugin用法自行百度

Happypack——将 loader 由单进程转为多进程

    webpack 是单线程的,Happypack 会充分释放 CPU 在多核并发方面的优势,帮我们把任务分解给多个子进程去并发执行,大大提升打包效率。

webpack优化之HappyPack 实战

Gzip 压缩原理

    Gzip就是对http内容进行重新编码, Gzip 是高效的,压缩后通常能帮我们减少响应 70% 左右的大小。 只需要在 request headers加上一句:accept-encoding:gzip

上一篇下一篇

猜你喜欢

热点阅读