Ext JS的自定义缓存设置

时间:2013-02-01 07:55:42

标签: javascript extjs

我最初为我的Ext JS应用程序提供了这个;

Ext.Loader.setConfig({
    disableCaching: false,
    enabled: true
});

这很棒,因为它会将Unix时间戳附加到我的JS文件中,使浏览器不会缓存文件。然后,我可以更新我的应用,而无需用户清除浏览器缓存,否则应用程序将面临破坏的风险。

问题是,这会减慢程序加载速度(因为每次都需要获取文件)。我只是想知道是否有一种简单的方法可以手动设置?_ dc = 1359704445222 (时间戳值),这样只有在我更新应用程序时该值才会更改。

tl; dr:我希望能够为我的Ext JS应用程序手动设置_dc参数值

2 个答案:

答案 0 :(得分:1)

动态加载应仅用于开发。获得发布版本后,使用Sencha Cmd创建应用程序的生成版本并将其部署到用户。

答案 1 :(得分:1)

不幸的是,时间戳是Sencha的硬编码。您可以通过修改ext-all-dev.js轻松更改它(或者如果您使用的是其他文件,请查找相似之处)并替换以下代码:

将以下Ext.Date.now()实例替换为您的版本号:

....
noCacheUrl = url + (this.getConfig('disableCaching') ? ('?' + this.getConfig('disableCachingParam') + '=' + Ext.Date.now()) : ''),
....
url = Ext.urlAppend(url, Ext.String.format("{0}={1}", me.cacheString, Ext.Date.now()));

同时将以下新Date()。getTime()实例替换为您的版本号:

....
url = Ext.urlAppend(url, (options.disableCachingParam || me.disableCachingParam) + '=' + (new Date().getTime()));
....
params[cacheParam] = new Date().getTime();

一旦你这样做,只要你打开了disableCaching,就应该反映在UI中。