Node Webkit清除缓存

5

我最近发现 c:/Users/用户名/AppData/Local/应用程序名称/缓存 目录下有超过100K的缓存文件。

我研究了一下,看到gui.App.clearCache()方法可以解决这个问题。我在启动和关闭应用程序时执行此方法。(在将gui分配给require("nw.gui")之后)

然而,这似乎没有起作用。什么都没有被删除。

有任何想法为什么会这样吗?


我遇到了同样的问题。你解决了吗? - asbjornenge
3个回答

3

看起来只有在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()都对我没有任何影响。


我之前也遇到了同样的问题,这个方法对我非常有效。谢谢。 - user1247058
1
这对我不起作用。因为我必须重新加载来自https://www.google.com的页面并清除缓存。 - user285594
gui.APP.clearCache() 对我起作用了。可能是由于 NW 的更新引起的。我正在运行 0.11.5 版本。另外,这个答案似乎不再起作用。 - Scott Wright
以上代码的补充:如果是 for (var module...),它也可以在严格模式下工作。 - Philipp Lenssen

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
    });
  });
};


0

现在是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⁩


对我没用,我必须自己删除目录。 - iwind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接