会话与分区
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 缓存是两类数据。