Node Webkit清除缓存

时间:2014-08-05 16:09:14

标签: node.js node-webkit

我最近发现c:/Users/username/AppData/Local/AppName/Cache包含超过100K的缓存文件。

我读了一下,发现gui.App.clearCache()方法应该解决这个问题。 我在应用程序的启动和关闭时执行此方法。 (在将gui分配给require("nw.gui")

之后

然而,这似乎没有帮助。什么都没有被删除。

为什么会这样?

3 个答案:

答案 0 :(得分:4)

需要缓存显然仅在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()对我都没有任何影响。

答案 1 :(得分:0)

遇到同样的问题所以我创建了一个快速的解决方案来暂时解决问题,直到我可以依赖原生的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
    });
  });
};

答案 2 :(得分:0)

现在是2019年,clearCache()可以通过添加以下内容来起作用:

var gui = require('nw.gui'); 
gui.App.clearCache();

nw.App.clearCache();

这将清除内存中的HTTP缓存和磁盘上的HTTP缓存,无论您使用哪种平台。我已经在Mac OS上进行了测试,但是在Linux上可能存在用户权限问题。

在MacOS上,您可以实时检查⁨

中的缓存文件夹是否已清空。

MacHD⁩▸⁨Users⁩▸youruser▸⁨Library⁩▸⁨Caches⁩▸⁨yourapp▸⁨Default⁩