如何使Dojo / Require的模块缓存无效?

时间:2013-08-18 10:27:57

标签: javascript caching dojo requirejs

我有一个基于dojo的模块,可以让我自动为我添加一个dojo / store / Memory。它被称为:

require( [ 'squad_builder/storeBroker!collectionStore' ],
    function( collectionStore )
{ 
    // use store...
} );

第一个require()调用加载存储,后续的调用从缓存加载存储。

这很好但我无法弄清楚如何使require的内部缓存无效,这样我就可以让下一个请求用新数据加载商店。

是否有任何内置于require()中的内容,或者我是否需要处理一些内部工作(如果是,那么?)

修改

the docs中提到:

  

注意:dojo加载器包含非标准函数require.undef,   它取消定义模块值。

但是当我调用它时,该方法是未定义的。在Firebug中查看require():

for( i in require )
{
    console.log( 'require', i, require[ i ] );
}

require.module有一个def()方法但不是undef()方法。

修改2

Require.cache似乎只包含dojo和dijit模块。自定义命名空间模块在哪里缓存?

1 个答案:

答案 0 :(得分:1)

根据dojo站点,该功能不会自动包含在“已构建”的dojo文件中。如果你看一个未压缩的dojo.js,你会在那里看到它。 从:http://dojotoolkit.org/reference-guide/1.9/loader/amd.html

  

下表提供了杠杆选项列表   在装载机内。第一列是定义的选项/功能   在加载器中,第二个选项是否是检测到的   feature(通过has.add())或者它只是一个选项及其默认值   值。使用“未构建”源,所有功能和选项都是   可用。如果已经构建了加载器,那么其中一些功能   可能已设置为staticHasFeatures,不可配置   了。

此处它还表示您可以通过添加一行go djconfig重新打开该功能 http://dojo-toolkit.33424.n3.nabble.com/require-undef-td3990559.html

  

dojoConfig = {has:{         “dojo-undef-api”:true}}