00:00
好,我们配置到缓存最大化的时候呢,这时候又会发生一个问题啊,我们去改一下这个ma这个串口,会发现一个小小的问题。比方说我们这里在第一个count,当然我都是随便写的,我们随便写一写。我们只要改动这个文件就好了。那么我们按道理呢,改变这个mass这个文件呢?只有mass这个创,它的harsh会发生变化,Many je应该不变,但是结果却出乎人意料。我们重新打包。哎,这个时候我们发现啊,不单是mass的哈变了man点这个哈也发生了变化,这是为什么呢?怎么我明明只改mass,怎么mind也变了。诶,Mind变了,就说明mind里面的文件内容发生了变化,所以才会导致这哈希值会重新生成,那为什么文件内容会发生变化呢?这里就要说一下,我们可以搜这个ma这个文件啊。
01:08
Man里面的依赖着mass这个模块,你看这里就依赖了,那么依赖mass模块的时候,它同样的会保存在这个ma的这个哈希值。当我mass文件发生变化,Mass的这个哈指要重新给重新生成,一旦mass的重新生成,因为may引入了mass这个模块,所以may里面的这个引入的这个mass模块的哈希值也要变,那么这样呢,就会导致main的这个文件也发生了变化,所以main的哈希值也变了,导致main的缓存失效。哎,这样的是非常不好的。这样就会导致就是一旦我们A模块一旦依赖于B模块。如果B模块发生变化,那么A也会发生变化。那假使我们呢,模块之间很多中很多出现互相依赖的关系,结果导致我其中一个模块发生变化,导致很多文件的缓存的事项,这样就非常的得不偿失。
02:01
那么这种问题怎么处理呢?哎,这个问题就是我们要想办法把这个may。这个文件的保存了ma文件的这个哈希值。单独整成一个文件。那么这个文件呢,我们叫runtime文件,一个运实验室的文件啊。好,那么也说面里面呢,它只记得我要引入一个比方说某个依赖叫A啊,那么A具体的文件地址在这个文件中去找。那么这样的话呢,就是将来我们ma发生变化,是这个文件会发生变化,还有这个runtime文件发生变化,那么many是不变的。同样道理,将来假设我A依赖B模块。对吧,或者是他依赖很多很多模块啊都无所谓。依赖各种模块都行。那么他都会把这个模块的这个文件的哈希值存在另外一个文件叫文件。所以当这个模块发生了变化,是这个变了,还有这个变了,其他是不变的。
03:03
这样的话呢,可以保证其他文件的一个缓存,而这个runtime文件呢,因为只保存了这个文件的一些哈希值和他们的音带关系,所以这个文件本身并不大,它的缓存事项对我们整个应用来讲,嗯,并没有太大的影响。所以我们是这样做到的。好,那么这个配置怎么配置呢。我们也要来到optimization这个这里进行配置。在这里我们配置这个runtime串,让它生成这个runtime文件。呃,我们给这个文件呢,取个名字。Entry pointer。OK,呃,它的名字呢,我们就叫runtime这个文件,然后呢,用个连接符盘连接起来。里面呢,就用这个它本身的这个入口文件的entry point,就是入口文件的这个名字啊,然后呢,这个文件是个JS文件,这就可以了。这样呢,就可以生成这个runtime文件,从而更好的缓存。下面我们再来画。
04:06
一起来看啊。此时打包的时候呢,这个may和masss这些文件都会发生变化,因为他们把一些内容提取到了这个集中了,所以他们发生变化没关系。OK,这时候多了一个runtime的一个文件啊。好,那么我们接下来呢,去改这个ma文件。来,我把这个给注释了,不想要了,知道吧,那么这时候就只有mass和runtime的哈气值会发生变化,其他文件是不变的。仔细观察。诶,你会发现就是下面这两个发生了变化,剩下的是没有变的。所以这样呢,就可以更好的做缓存了。好了,以上呢,这个就是我们的这个怎么去更好的做缓存,我们要解决两个问题,第一个问题就是当我们缓存的资源发生变化的时候,我希望加载新的资源。
05:02
第二个问题就是,当我有一个文件发生变化,我希望就这一个文件的缓存失效,其他文件的缓存不要受到影响。我们分别是怎么做的呢?来一起看。第一种做法呢,我们是通过C哈来做到的,C哈呢能够保证。咱们呢,文件输出的文件,根据文件内容去生成哈希纸。所以只有你文件内容发生变化,这个它其实就会发生变化,文件内容不变就不变,从而来做这个缓存。同时我们配置的这个runtime tnk这个文件,它会把文件之间依赖的这个哈值呢提取成了一个单独的文件去保管。这时候那么就能保证啊,当我A文件发生变化啊,它只有A和容量time会发生变化,并不会影响它的这个B文件或者C文件。这样的话呢,能让我们缓存的更加持久化,从而让用户体验更好。好了,以上呢,就是我们的缓存配置了。
我来说两句