了解requirejs里的缓存机制,区别urlArgs 和requirejs.undef的用法


  • :
  • 01-07 21:51
  • :
  • 4次
  • :
  • 0条
  • 1赞

简介本文主要讲的是requirejs的缓存机制,了解urlArgs和requirejs.undef的区别及用法。

我们知道requirejs有很强大的“缓存”功能,而这个“缓存”功能也是加快我们的web页面加载速度的重要原因。

举个例子来说,我们用requirejs来加载jquery文件,在web页面第一次载入时,用require加载完成后,那么当我们在本web页面,或web里其它的页面里再次加载jquery文件时,就不会再次从服务器读取并载入,而是直接从“缓存”里载入并调用。

但有时我们需要“清除”这些缓存,本文站长就和大家分析讲解一下在requirejs里清除缓存的方法:

方法1:使用urlArgs:

requirejs.config({    
    urlArgs: "r=" +  (new Date()).getTime()
});

使用这个方法,在我们用requirejs从服务器上读取下载js文件时,会在每个js文件的尾端加上“r=随机数”,这样,我们可以保证从服务器端下载的js文件是最新的文件。

但是,需要强调的是,使用这个方法,只能保证我们在第一次打开web页面时,载入的是从服务器下载的最新的js文件,但却不能保证每次的调用时都是从服务器端下载的。

解释起来可能有点绕,举个例子来说,我们的web页面里,需要载入一个“base.js”的文件,这个文件是经常变动的,所以我们要保证每次的载入,都是从服务器端读取到的最新的base.js文件,但这个方法只能保证我们在第一次打开web页面时,所载入的是最新的,但当再次需要读取载入base.js时,就并不是从服务器端读取载入的了。

如果需要我们每次的载入都是最新的文件,那么就需要方法2了。

方法2:使用requirejs.undef("名称")来取消模块的注册:

requirejs.undef("base");
require(["base"],function(){});

这样的写法,可以保证我们每次载入的base模块,都是从服务器下载的最新的模块,而不是从缓存当中获取到的。



您正在找的文章可能是: