首页的hosts文件内容显示存在以下问题:
- 缓存机制过于激进:使用1小时缓存,后台手动添加自定义域名后前端仍显示缓存内容
- 强制刷新逻辑不完整:现有的"立即全域名优选"按钮主要用于IP优选,不是简单的内容刷新
- 缓存失效机制缺失:后台添加自定义域名后,前端缓存没有自动失效
- 位置:在"立即全域名优选"按钮旁边
- 功能:直接调用
loadHosts(true)强制刷新hosts内容 - 优点:简单直接,用户可快速看到最新内容
- 实现:
- HTML: 添加
forceRefreshDisplay按钮 - CSS: 添加按钮样式
- JS: 实现
forceRefreshHostsDisplay()函数
- HTML: 添加
- 改进:优化
performIntelligentCacheRefresh()函数 - 功能:全域名优选完成后更可靠地刷新显示
- 实现:增强缓存清理和状态同步逻辑
- 位置:控制面板中,状态文本旁边
- 功能:显示当前数据状态(缓存/最新/更新中)
- 实现:
- HTML: 添加
cacheStatus元素 - CSS: 添加状态样式(cached/fresh/updating/error)
- JS: 实现
updateCacheStatus()函数
- HTML: 添加
<!-- 新增强制刷新按钮 -->
<button id="forceRefreshDisplay" class="btn btn-secondary"
title="强制刷新显示最新的hosts内容,包括后台添加的自定义域名">
强制刷新显示
</button>
<!-- 新增缓存状态指示器 -->
<span id="cacheStatus" class="cache-status-text">缓存状态:加载中...</span>- 彻底清除所有缓存(内存+localStorage)
- 清除所有定时器
- 调用
loadHosts(true)强制获取最新数据 - 更新按钮状态和用户反馈
- 统一管理缓存状态显示
- 支持多种状态:cached、fresh、updating、error
- 提供用户友好的状态信息
- 强制刷新时跳过缓存检查
- 添加缓存年龄显示
- 改进状态反馈机制
- 优化全域名优选后的数据同步
- 添加详细的状态更新
- 改进错误处理机制
/* 缓存状态文本样式 */
.cache-status-text {
font-size: 0.75rem;
color: var(--text-secondary);
margin-left: 0.5rem;
padding: 0.25rem 0.5rem;
background-color: var(--bg-secondary);
border-radius: var(--radius-sm);
border: 1px solid var(--border-color);
}
.cache-status-text.cached { /* 缓存状态 */ }
.cache-status-text.fresh { /* 最新状态 */ }- 用户点击"强制刷新显示"按钮
- 系统清除所有缓存
- 立即获取最新hosts数据
- 显示包含后台添加的自定义域名的内容
- 用户点击"立即全域名优选"按钮
- 系统执行IP优选过程
- 优选完成后自动刷新显示
- 显示包含优选IP的最新hosts内容
- 缓存状态指示器实时显示数据状态
- 用户可了解当前显示的是缓存还是最新数据
- 提供明确的操作指导
- ✅ 新按钮正确显示和响应
- ✅ 缓存状态指示器正常工作
- ✅ 强制刷新功能正确执行
- ✅ API端点正常响应
- ✅ 与现有功能兼容
- ✅ 不影响原有的全域名优选功能
- ✅ 缓存机制正常工作
- 版本号:1.1.0 → 1.2.0
- 更新类型:功能增强(feat)
- 向后兼容:是
- 自动缓存失效:考虑添加WebSocket或Server-Sent Events来实现实时缓存失效
- 批量操作优化:优化多个自定义域名同时添加时的刷新策略
- 性能监控:添加刷新操作的性能指标收集
- 用户偏好:允许用户自定义缓存时长和刷新策略
通过添加强制刷新显示功能和缓存状态指示器,成功解决了首页hosts文件内容显示不正常的问题。用户现在可以:
- 快速刷新查看最新的hosts内容
- 了解当前数据的缓存状态
- 确保看到后台添加的自定义域名
- 享受更好的用户体验和操作反馈