如何清除Electron(原子shell)中的缓存数据?

时间:2015-07-16 06:31:06

标签: node.js node-webkit electron

我想在Electron(atom-shell)中清除缓存数据。我没有     找到任何类似gui.App.clearCache()的api(node-webkit api来清除缓存     数据)在电子。如果您发现任何api或任何其他方式,请让我     知道。评论表示赞赏。

7 个答案:

答案 0 :(得分:29)

Electron将它的缓存存储在这些文件夹中:

视窗:
C:\Users\<user>\AppData\Roaming\<yourAppName>\Cache

Linux操作系统:
/home/<user>/.config/<yourAppName>/Cache

OS X:
/Users/<user>/Library/Application Support/<yourAppName>/Cache

因此删除这些文件夹也可以帮助您。 当然这是一次性解决方案;-)

答案 1 :(得分:4)

如果您要清除以前登录会话的任何残留,请最好使用此功能:

loginWindow.webContents.session.clearStorageData()

答案 2 :(得分:2)

我们正在我们的应用程序中使用它...

 <Viewbox Width="auto" Stretch="Fill">
            <Grid  HorizontalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="7*"/>
                    <RowDefinition Height="18*"/>
                </Grid.RowDefinitions>
                <TextBlock x:Name="AppGreeting" Text="Good Morning, User" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,5,0,4.6" FontWeight="Bold" Grid.RowSpan="2"/>
                <TextBlock x:Name="WindowName" Text="Home" HorizontalAlignment="Right" Margin="0,5,4.6,4.6" Grid.RowSpan="2"/>
            </Grid>
 </Viewbox>

电子7的更新:

const { app, session } = require('electron');

// ...

session.defaultSession.clearStorageData(null, (error: any) => {
  // in our case we need to restart the application
  // app.relaunch();
  // app.exit();
});

答案 3 :(得分:1)

答:

var remote = require('remote'); var win = remote.getCurrentWindow(); win.WebContents.session.cookies.get(details, callback) // getting cookies win.WebContents.session.cookies.remove(details, callback) //deleting cookies

了解更多信息:http://electron.atom.io/docs/v0.29.0/api/browser-window/

答案 4 :(得分:0)

在Windows电子版v10.1.5上尝试了@thegnuu和library(ggplot2) #Code game_count$Freq <- game_count$sum/game_count$number #Plot ggplot(game_count,aes(x=1:nrow(game_count),y=Freq))+ geom_col(fill='cyan3',color='black')+ xlab('') 的答案。

选项1: 直接删除缓存路径session.defaultSession.clearCache();

C:\Users\<username>\AppData\Roaming\<appname>\Cache

选项2 :它还会清除相同的_deleteFolder(dirPath) { const fs = require('fs'); // delete directory recursively try { fs.rmdirSync(dirPath, {recursive: true}); this._logger.info(`cache clean: ${dirPath} is deleted!`); } catch (e) { this._logger.error(`cache clean: could not delete ${dirPath}!`, e); } } 目录

C:\Users\<username>\AppData\Roaming\<appname>\Cache

选项1的问题:

  • 此方法有时会导致应用突然崩溃(在这种情况下,catch块未运行)。
  • 此外,应用重新启动后,应用无法加载http资产。通常,清除缓存文件夹后,当我启动应用程序时,我可以看到创建了新的缓存文件。但是,在选项1中,即使第二次重新启动,应用也无法加载资产。手动删除缓存目录,然后应用正常启动。
  • 尽管我确实从const {session} = require('electron'); session.defaultSession.clearCache(); 获取了日志,但未删除缓存目录。里面还有5个文件。
  • 尝试使用异步this._logger.info(`cache clean: ${dirPath} is deleted!`);,得到了相同的结果。

在选项2上,我没有遇到任何问题。我想这是最好的选择。

奖金:fs.rmdir清除session.defaultSession.clearStorageData();目录

答案 5 :(得分:-1)

你可以尝试mainWindow.webContents.clearHistory(); 或删除应用程序缓存文件夹中的内容(将在应用程序运行时重新创建)。 您可以使用app.getPath('userData') + '/Cache'

获取路径

答案 6 :(得分:-1)

在开发时,请在开发人员工具中转到标签页应用程序,并清除存储和清除站点数据