本课问题:我观察到的差异,究竟由哪个变化造成?
前置:已有竞争假设和预测;四个样本已各存一条可辨认文字。
本课交付:三次以上有条件记录的实验,包含一次真正的服务重启。预计 40–60 分钟。
在调查记录本写下完整 URL、浏览器环境、实验编号、服务指纹。终端中的 --data-dir 也要保持一致。
本实验默认 http://127.0.0.1:8034/?experiment=investigation-01。换成 localhost、换端口、换实验编号、换数据目录都改变了额外条件。此时数据不同,不一定是你本来要研究的那种变化。
输入 A-第一轮等唯一文字。不要只数行数:一条旧记录也可能让数字看起来“正确”。
先登记预测,再刷新原页面,逐个记录哪些样本还能看见原文字。然后复制完整链接到同一浏览器的新标签页,再核对一次。
区分当前页面与新页面很重要:新标签页创建了新的页面运行环境,但通常仍使用同一浏览器站点存储。它与更换独立浏览器环境不是同一个操作。
浏览器有缓存和页面恢复机制,但本实验通过 HTTP 提供页面,并让重新加载执行新的脚本。不要把“恢复一个被挂起的标签页”随意等同于实验规定的刷新。
在另一种浏览器,或新开的独立隐私会话中,粘贴完全相同的实验链接。普通新窗口通常和原窗口共享站点存储,不足以构成独立环境。
如果用隐私窗口,请注意多个同时存在的隐私窗口可能共享同一次隐私会话。先关闭此前隐私窗口,再新开,或使用另一浏览器做对照。
此时不新增记录,只读取原文字。新增后再观察会混入写操作,无法确定看到的是原记录还是刚写进去的新记录。
回到运行实验的终端,按 Ctrl+C 停止。刷新页面可能暂时打不开,这是预期的服务不可用。然后用相同端口、相同数据目录重启:
py -3 lab.py --no-browser
若第一次指定了 --port 或 --data-dir,这次也传相同参数,并从同一工作目录运行。回到原来的完整实验链接刷新。服务指纹应改变;若没变,先确认自己是否真的停止了正确的进程。
这一步同时造成页面刷新,因此解释 A 的结果时不能只归因于服务重启。我们在前两次实验已单独观察页面刷新,才有条件对照 C/D 的额外变化。
A:刷新原页或打开新页后,先前的文字不再可见。
B:同一浏览器、同一来源与实验编号下刷新或开新页仍可见;独立浏览器环境看不到原浏览器的 B。服务重启本身不清除 B。
C:刷新和独立浏览器环境都能读到同一实验数据;服务进程结束并重新启动后,原记录消失。
D:同一实验、同一数据目录下,刷新、独立浏览器环境和服务重启后都能读到原记录。
这组行为支持不同生存范围的解释,仍不足以唯一确定内部技术。一个程序也可能在启动时主动清空数据库,表现得像“进程内存”;一个远端服务也可能表现得像“本地文件”。下一课用必要的内部证据进一步区分。
先核对条件,再提出新解释:是不是不同端口?是不是换了实验编号?数据目录是否变化?浏览器是否禁用存储?是否读取到旧页面而非重新加载?
把这种排查也留在记录中。将失败观察改写成标准答案,会破坏后续判断的依据。
交付至少三条“预测 → 操作条件 → 观察 → 更新解释”的记录,包含刷新、独立浏览器环境和真正重启。至少指出一处仍不能确定的内部细节。
到此,我们能对“刷新后保留”和“进程重启后保留”给出有限证据,但没有验证断电、磁盘损坏、用户权限、备份和永久保存。若用途只是本机短期草稿,可以暂时接受较弱承诺;重要资料还需要进一步调查。