我最近发现 c:/Users/用户名/AppData/Local/应用程序名称/缓存
目录下有超过100K的缓存文件。
我研究了一下,看到gui.App.clearCache()
方法可以解决这个问题。我在启动和关闭应用程序时执行此方法。(在将gui分配给require("nw.gui")
之后)
然而,这似乎没有起作用。什么都没有被删除。
有任何想法为什么会这样吗?
我最近发现 c:/Users/用户名/AppData/Local/应用程序名称/缓存
目录下有超过100K的缓存文件。
我研究了一下,看到gui.App.clearCache()
方法可以解决这个问题。我在启动和关闭应用程序时执行此方法。(在将gui分配给require("nw.gui")
之后)
然而,这似乎没有起作用。什么都没有被删除。
有任何想法为什么会这样吗?
看起来只有在global.require.cache
上才能使用要求缓存。
手动清除缓存让它对我有效。
for(module in global.require.cache){
if(global.require.cache.hasOwnProperty(module)){
delete global.require.cache[module];
}
}
location.reload()
gui.APP.clearCache()
和gui.Window.get().reloadIgnoringCache()
都对我没有任何影响。
我遇到了相同的问题,所以我创建了一个快速解决方案来暂时解决这个问题,直到我可以依赖于本机gui.App.clearCache函数。它会异步地删除整个Cache目录并重新创建它。
这需要 fs-extra 库,并且应该在Linux、OSX和Windows上都能正常工作。
var customClearCache = function(){
var dir = path.join(gui.App.dataPath, '/Cache');
fs.remove(dir, function(err) {
if (err) return console.error(err)
fs.mkdirs(dir, function(err) {
if (err) return console.error(err)
// This is where I start my app
});
});
};
现在是2019年,通过添加以下内容,clearCache()可以正常工作:
var gui = require('nw.gui');
gui.App.clearCache();
或者
nw.App.clearCache();
这将清除内存中和磁盘上的HTTP缓存,无论您使用的平台是什么。我已在Mac OS上进行了测试,但在Linux上可能会出现用户权限问题。
在MacOS上,您可以实时检查缓存文件夹是否被清空,路径为:
Mac HD ▸ Users ▸ youruser ▸ Library ▸ Caches ▸ yourapp ▸ Default