跳到主要内容

会话与分区

session 是一套网络和存储状态,作用类似浏览器里的一份用户配置。每一份 session 各自持有:

  • Cookie
  • HTTP 缓存
  • localStorage、IndexedDB、Service Worker
  • 代理设置
  • webRequest 拦截器
  • 自定义协议处理器

session.defaultSession 是没有单独指定分区的窗口所使用的那一份。

partition​

窗口用 webPreferences.partition 选择 session:

new BrowserWindow({
webPreferences: { partition: 'persist:account-a' },
});
  • 以 persist: 开头:数据写到磁盘,同一字符串的窗口共享这份数据。
  • 没有这个前缀:只存在内存里,应用退出后消失。

也可以用 session.fromPartition(name) 在主进程拿到同一份对象。协议、代理和下载监听都要注册到这份 session 上;只改 defaultSession 不会影响带分区的窗口。

什么时候分分区​

多账号同时登录时,每个账号一个 persist: 分区,Cookie 就不会串。嵌入的第三方页面可以使用一个内存分区,这样它写不进主账号的存储。

退出登录时,对该分区调用 clearStorageData() 和 clearCache()。存储和 HTTP 缓存是两类数据。

相关文档​