12 月 28 日晚上十点四十,我在书房那台用了六年的 ThinkPad 上打开了 49图库资料中心 的页面。屏幕右下角还挂着一个未读的微信提醒,是同事老周发来的,只有一句话:“你那边资料中心是不是也打不开?”我回了个“是”,然后把手机扣在桌面上。这台机器的浏览器缓存上一次清还是九月,我很清楚问题大概出在哪里,但清楚问题不等于能修好它。
第一次尝试很笨。我按 Ctrl+Shift+Delete 打开清除数据面板,把“缓存的图片和文件”勾上,时间范围选了“全部”,然后点了清除。等待了大约四十秒,浏览器提示清理完成,缓存条目从 3,214 条降到了 0。我刷新页面,49图库资料中心 的标题栏出来了,可列表区一片空白,只有骨架屏在闪。这说明缓存不是唯一的问题,索引本身已经被上一次异常退出写坏了。
我后来在笔记里记下了一个判断:如果清完缓存后页面能出骨架但不出条目,多半不是网络问题,而是本地索引与远端清单对不上号。49图库资料中心恢复技巧 里最容易被忽略的一步,就是先确认“文件在不在”和“索引对不对”是两件事。
第二次尝试,我打开了开发者工具。Network 面板里有一条请求返回 304,一条返回 200 但响应体只有 1.8 KB,正常应该是 60 KB 上下。老周在电话里说,他上周遇到类似情况,是把站点的本地存储整个删掉才好的。我照做了,在 Application 面板里清掉 Local Storage 和 IndexedDB,重新登录。页面加载到 87% 卡住,进度条停在那里不动,像一条走不动的传送带。那会儿已经十一点二十了。
这里我插一句题外话。站内有一篇讲 qq授权qq浏览器怎解除 的旧文,我那天翻出来看了一遍,里面提到浏览器账户同步会把一部分授权状态带回来,这让我意识到问题可能不在单机,而在账户层面。这个联想后来救了我一次。
第三次我换了思路,用无痕窗口打开。无痕模式下 49图库资料中心 居然正常显示,条目一条不少。这就基本坐实了:问题出在普通窗口的持久化数据里,而不是服务端。我回到普通窗口,把浏览器账户的同步开关关掉,再清一次存储,重启浏览器。这次加载到 100%,但条目顺序是乱的,按时间排序变成了按文件名排序。顺序错了,说明索引文件被重建过,只是重建时用错了排序键。
第四次尝试是在凌晨零点过五分。我把同步关着,先删 IndexedDB,再删 Local Storage,然后手动触发一次完整刷新(按住 Shift 点刷新按钮),等索引重建。这次日志里出现了 4 条重建记录,时间戳从 00:06 到 00:11,逐条对齐。条目顺序恢复正常,缩略图也回来了。为了确认不是偶然,我又用同样的流程在另一台机器上跑了一遍,也成功了。到这一步,我才敢把流程写下来。
顺带说,如果你只是查资料、收藏条目,这套流程其实用不上,日常用 49图库资料查询搜索结果收藏功能 就够了,那些操作不会碰索引层。真正需要恢复的,大多是异常退出、强制关机、或者同时开了多个窗口写同一份存储的情况。
流程本身不复杂,复杂的是判断自己在哪一步。我把判断依据整理成三条:页面完全空白说明缓存与网络层有问题;骨架屏常驻说明索引缺失;条目出来但顺序错乱说明索引被重建且键值不对。这三条对应三种不同的处理方式,混着用只会越修越乱。
还有个细节值得说。那天我在 Application 面板里看到 IndexedDB 的版本号是 v7,而站点的清单文件声明的版本是 v9。版本号落后两代,是重建失败的根因之一。清存储之所以有效,是因为它强制浏览器丢弃了旧版本库,重新按 v9 建。这个发现让我把“先看版本号”加进了检查清单的第一条。
如果你习惯直接用浏览器打开网页而不走客户端,站内那篇 QQ浏览器直接打开网页 里提过一个方法,可以绕过部分缓存层,作为验证手段挺好用的。而涉及活动入口的,比如 49图库资料免费打开49图库app网站活动专区,我建议单独开窗口,别和资料中心共用同一份存储,减少互相写坏的概率。
写到这里天已经快亮了。这趟折腾看起来是为一个页面,实际上是在把“免费打开”和“资料中心恢复”这两件事拆开理解:前者是入口问题,后者是数据一致性问题。入口可以绕过,数据一致性绕不过去,只能老老实实按顺序修。疲惫是真的,但把流程跑通、能在两台机器上复现,也算值得。