重启之后清除登录信息
This commit is contained in:
97
CACHE_CLEAR_FIX.md
Normal file
97
CACHE_CLEAR_FIX.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# 缓存清理功能修复说明
|
||||
|
||||
## 问题描述
|
||||
重启电脑时,清除缓存没有生效,并且日志文件中也没有看到对应的日志。
|
||||
|
||||
## 问题原因分析
|
||||
1. **异步操作处理不当**:`clearStorageData` 是异步操作,但在事件处理中没有正确等待完成
|
||||
2. **日志配置问题**:日志可能没有及时写入文件,导致系统关机时日志丢失
|
||||
3. **事件处理顺序问题**:`event.resume()` 在缓存清理完成前就被调用
|
||||
4. **缺少重启事件监听**:只监听了 `shutdown` 事件,没有监听 `restart` 事件
|
||||
|
||||
## 修复内容
|
||||
|
||||
### 1. 创建统一的缓存清理工具 (`src/main/utils/cacheUtils.js`)
|
||||
- 提供 `clearAllSessionData()` 函数,统一处理会话数据清理
|
||||
- 提供 `clearAllWindowsCache()` 函数,清理所有窗口的缓存
|
||||
- 包含详细的错误处理和日志记录
|
||||
- 确保日志及时写入文件
|
||||
|
||||
### 2. 改进日志配置 (`src/main/utils/logger.js`)
|
||||
- 设置 `log.transports.file.sync = true` 确保日志立即写入
|
||||
- 添加日志文件路径获取功能
|
||||
- 在应用启动时显示日志文件路径
|
||||
|
||||
### 3. 修复主进程事件处理 (`src/main/index.js`)
|
||||
- 修复 `powerMonitor.on('shutdown')` 事件处理,使用 async/await 正确等待缓存清理
|
||||
- 添加 `powerMonitor.on('restart')` 事件监听,处理系统重启
|
||||
- 修复所有 `clearStorageData` 调用,使用统一的工具函数
|
||||
- 添加进程信号监听 (`SIGTERM`, `SIGINT`) 确保强制关闭时也能清理缓存
|
||||
- 添加未捕获异常处理
|
||||
|
||||
### 4. 改进托盘功能 (`src/main/tray.js`)
|
||||
- 使用统一的缓存清理函数
|
||||
- 添加"查看日志"菜单项,方便用户查看日志文件
|
||||
|
||||
### 5. 添加测试脚本 (`test-cache-clear.js`)
|
||||
- 提供缓存清理功能的测试代码
|
||||
|
||||
## 修复后的功能特点
|
||||
|
||||
### 缓存清理覆盖的场景
|
||||
1. **系统关机** (`powerMonitor.on('shutdown')`)
|
||||
2. **系统重启** (`powerMonitor.on('restart')`)
|
||||
3. **应用正常退出** (`app.on('before-quit')`)
|
||||
4. **窗口关闭** (`app.on('window-all-closed')`)
|
||||
5. **应用退出** (`app.on('will-quit')`)
|
||||
6. **进程信号** (`SIGTERM`, `SIGINT`)
|
||||
7. **托盘手动清理**
|
||||
|
||||
### 日志记录改进
|
||||
- 每个清理操作都有详细的日志记录
|
||||
- 包含操作上下文信息(如 'shutdown', 'restart' 等)
|
||||
- 日志立即写入文件,避免丢失
|
||||
- 提供日志文件路径查看功能
|
||||
|
||||
### 错误处理
|
||||
- 完善的错误捕获和日志记录
|
||||
- 即使清理失败也不会阻止应用正常退出
|
||||
- 详细的错误信息记录
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 查看日志
|
||||
1. 右键点击托盘图标
|
||||
2. 选择"查看日志"
|
||||
3. 系统会自动打开日志文件所在目录
|
||||
|
||||
### 手动清理缓存
|
||||
1. 右键点击托盘图标
|
||||
2. 选择"清除缓存"
|
||||
3. 系统会清理所有缓存并重新加载窗口
|
||||
|
||||
### 测试缓存清理
|
||||
```bash
|
||||
node test-cache-clear.js
|
||||
```
|
||||
|
||||
## 日志文件位置
|
||||
- **Windows**: `%APPDATA%\[应用名称]\logs\main.log`
|
||||
- **macOS**: `~/Library/Logs/[应用名称]/main.log`
|
||||
- **Linux**: `~/.config/[应用名称]/logs/main.log`
|
||||
|
||||
## 验证修复效果
|
||||
1. 重启电脑
|
||||
2. 查看日志文件,应该能看到类似以下内容:
|
||||
```
|
||||
[时间] 系统将要重启.
|
||||
[时间] [restart] 开始清除所有会话数据
|
||||
[时间] [restart] 会话数据清除成功
|
||||
[时间] [restart] 缓存清理完成
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
- 修复后的代码确保了缓存清理的可靠性
|
||||
- 日志记录更加详细,便于问题排查
|
||||
- 即使系统强制关闭应用,也会尝试清理缓存
|
||||
- 所有清理操作都是异步的,不会阻塞系统关机/重启流程
|
||||
Reference in New Issue
Block a user