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

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

作者: Fl_来看看 | 来源:发表于2019-06-05 22:46 被阅读0次

        内容出自前端性能优化原理与实践,我作为笔记简单记录下。
        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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ghlexctx.html