我的编程空间,编程开发者的网络收藏夹
学习永远不晚

webpack2缓存优化的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

webpack2缓存优化的方法

这篇文章主要介绍了webpack2缓存优化的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇webpack2缓存优化的方法文章都会有所收获,下面我们一起来看看吧。

随着Vue,react等MVVM的应用,ES6等新语言特性被引入浏览器端开发中,能高效组织组件化代码,使用ES6 import引用等特性的webpack被许多业务项目使用。

1、“污染”情况的示例

形如上图的目录结构,项目有3个独立的入口文件放在pages目录下,共同依赖一个vue.min.js,分别不同文件依赖alib.js,blib.js,一个vue组件list.vue; 我们使用下面的配置来生成一个每个js文件一一对应的编译后文件。

LsLoader目录下运行 gulp webpack,分析依赖,webpack 开始打包,生成结果如下

看上去很美,那我们现在项目中有了需要改动的地方,list2.js中,原来引用代码是

import a from '../lib/alib.js';

现在我们需要添加个依赖,该动成为->

import a from '../lib/alib.js'

import b from '../lib/blib.js'

修改完毕,gulp webpack ,webpack打包。按道理只有list2.js会发生改变,生成新md5被用户下载到客户端。实际结果呢?

怎么改了一个文件其他也变了,我根本没动啊。我修改了个文件其他页面的缓存也跪了,不科学啊。

这种现象,我称为打包意外污染。

2、污染原理

观察我们前后打包的源码进行比对,除了page_list2文件是确实修改外,alibjs等文件没改源码的结果文件后变化点在这里

第一次编译:webpackJsonp([3],{

第二次编译:webpackJsonp([4],{

vuemin.js库文件修改则是在

第一次编译: 3:

(function(module, exports, __webpack_require__) {

module.exports = __webpack_require__("YOc6");

}),

第二次编译: 4:

(function(module, exports, __webpack_require__) {

module.exports = __webpack_require__("YOc6");

}),

数字都+1了,我们添加了个模块引用所有编译结果的数字序号都+1,这数字是什么?

这些就是webpack运行在浏览器时候配合webpackJSONP函数使用的moduleID和chunckID,

webpack各种loader加载.vue .css .js各种格式组件的背后,是编译loader文件把浏览器不识别的文件转换成一个个可执行的代码块,代码块的标示用的是两个数组,moduleIDs数组和chunkIDs数组,放在webpack源码中,运行时根据遇到的模块数量和chunk数量自增来确定唯一性。chunk可以理解为文件级别的代码块,编译出来后就是个单独的js文件可以被入口文件引用。module则是chunk内部的一个个代码段落.

其中,module又分为normalModule和contextModule两种,

normalModule很好理解,就是普通的模块代码,es6 export翻译成es5的形式后包裹使用,

contextModule比较特殊,是非入口文件暴露内部模块的一段代码,形如

(function(module, exports, __webpack_require__) {

module.exports = __webpack_require__("0YW9"); //把内部的普通模块暴露出去

})

关于“webpack2缓存优化的方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“webpack2缓存优化的方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

webpack2缓存优化的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP底层的缓存优化与实现方法

PHP底层的缓存优化与实现方法缓存是 Web 开发中常用的优化手段之一,它可以提高系统的性能并减轻服务器的负载。在 PHP 应用开发中,我们可以通过底层的缓存优化来提升系统的响应速度和性能表现。本文将详细介绍 PHP 底层的缓存优化和实现方
PHP底层的缓存优化与实现方法
2023-11-08

Android编程使用缓存优化ListView的方法

本文实例讲述了Android编程使用缓存优化ListView的方法。分享给大家供大家参考,具体如下: ListView调用Adapter的getView方法获取每一个Item布局,将这些已经获得的Item布局放入缓存,将大大提高获取数据的效
2022-06-06

android中H5本地缓存加载优化的方法

这篇文章主要介绍了android中H5本地缓存加载优化的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。动手: 1.用 filedownloader 去下载了Html压缩文
2023-06-14

Centos7利用内存优化磁盘缓存读写速度的方法

linux中的/dev/shm目录不属于磁盘,而是内存,如果使用/dev/shm/目录作为Linux中的磁盘文件读写缓存,可想效率是非常惊人的。 默认/dev/shm目录没有挂载,需要手动进
2022-06-04

Swoole和Workerman对PHP与MySQL的数据本地缓存和远程缓存的优化方法

随着互联网的发展,PHP和MySQL作为开发Web应用的主要工具,其性能和效率问题一直是开发者关注的焦点。为了提高性能,减轻数据库压力,开发者通常会采取数据缓存的方式来优化应用程序。本文将介绍使用Swoole和Workerman两个常用的P
2023-10-21

Java Jersey 如何进行缓存优化?(java jersey 怎样优化缓存)

在JavaJersey开发中,缓存优化是提高应用性能的重要环节。以下是关于JavaJersey怎样优化缓存的详细步骤:一、了解缓存的基本概念缓存是一种临时存储数据的技术,它可以将经常访问的数据存储在快速访问的存储介质
Java Jersey 如何进行缓存优化?(java jersey 怎样优化缓存)
Java2024-12-22

Android内存优化之内存缓存

什么是缓存?缓存技术原理是把用户访问的所有对象看作一个全集,经过算法标记哪些是用户经常访问的对象,把这些对象放到一个集合里,这个集合是全集一个子集,下一次用户再访问的时候会先从这个子集集合中查找用户要访问的对象如果找到直接返回这个对象,如果
2022-06-06

MySQL优化(4):查询缓存

查询缓存:MySQL提供的数据缓存QueryCache,用于缓存SELECT查询的结果默认不开启,需要在配置文件中开启缓存(my.ini/my.cnf)在[mysqld]段中,修改query_cache_type完成配置:0:关闭1:开启,但是默认缓存,需要增
MySQL优化(4):查询缓存
2018-07-13

编程热搜

目录