Vibe Tutorial
代码运行的三种状态与构建原理

4.1 缓存陷阱排查

Tip

学会排查缓存问题,理解为什么代码修改后没有生效,掌握强制刷新和清除缓存的方法。


1. 为什么要学这个?

你正在调整网页的按钮颜色,把bg-blue-500改成了bg-red-500,满怀期待地保存文件,切回浏览器,甚至点了刷新按钮。

结果...按钮还是蓝色的。

你开始怀疑人生:是代码没保存?是编译器坏了?还是此时此刻有两个平行宇宙?

别慌,这通常是浏览器为了"帮你省流量"而犯下的错。


2. 核心概念

2.1 缓存 - 浏览器的短期记忆

技术定义:浏览器缓存(Browser Cache)是浏览器将网络请求的响应副本存储在本地,以便后续请求直接使用,减少网络延迟和带宽消耗。

就像浏览器的短期记忆。

  • 第一次访问:浏览器把图片、CSS样式表等文件"背"下来(存到本地硬盘)
  • 第二次访问:浏览器偷懒,直接从"记忆"里拿出来给你看,而不是再去服务器重新下载
  • 开发阶段:这就是最大的捣乱分子

2.2 缓存的工作流程

sequenceDiagram
    participant User as 用户
    participant Browser as 浏览器
    participant Cache as 本地缓存
    participant Server as 开发服务器
    
    User->>Browser: 刷新页面(F5)
    Browser->>Cache: 有这个文件的最新版吗?
    alt 缓存里有
        Cache-->>Browser: 有!给你旧文件(304)
        Browser-->>User: 显示旧的蓝色按钮😭
    else 强制刷新
        User->>Browser: 强力刷新(Shift+F5)
        Browser->>Server: 别废话,给我最新的!
        Server-->>Browser: 好的,这是红色的新代码(200)
        Browser-->>User: 显示新的红色按钮✅
    end

3. 三招制敌

第一招:暴力刷新(Hard Reload)

最简单的肌肉记忆:

  • Windows/Linux: Shift + F5
  • Mac: Cmd + Shift + R

**原理:**告诉浏览器"忽略所有缓存,重新下载所有文件"。

第二招:禁用缓存(Disable Cache)

开发者必备:

  1. F12打开开发者工具
  2. 切换到**Network(网络)**标签页
  3. 勾选顶部的Disable cache选项

**注意:**只有在开发者工具打开时才生效。

第三招:核弹清空(Next.js特有)

有时不是浏览器的锅,而是Next.js本地的构建缓存:

  1. 停止运行项目(终端按Ctrl+C)
  2. 删除项目根目录下的.next文件夹
  3. 重新运行pnpm dev

**原理:**彻底清除所有中间状态。


4. 适用场景

🎯 场景 描述
样式调试时 修改了CSS但页面布局没变,通常是CSS文件被缓存了
图片替换时 覆盖了同名图片(如logo.png),页面显示的还是旧Logo
部署上线后 刚刚发布了新版本,用户却抱怨看到的还是旧功能

5. 避坑指南

✅ 推荐做法 ❌ 禁忌
开发时常开Disable cache 盲目信任浏览器的刷新按钮(F5)
上线文件带哈希值(Next.js自动做好了) 给静态文件起固定的名字(如style.css)且不加版本号
遇到诡异问题先清缓存 遇到问题直接重写代码,怀疑逻辑错了

6. 真实案例

Story

2015年,Steam圣诞节"串号"惊魂

2015年圣诞节,全球最大的游戏平台Steam遭遇了史上最严重的缓存事故。当你登录Steam查看自己的账户页面时,看到的却是别人的账户信息!你可以看到陌生人的邮箱、家庭住址、信用卡后四位,甚至购买记录。全世界的玩家都疯了,以为Steam被黑客攻陷了。真相是:并没有黑客。原因仅仅是Steam为了应对圣诞促销的巨大流量,配置了过于激进的Web缓存服务器(Varnish)。配置错误导致服务器把"用户A的个人资料页面"缓存了下来,并把它当成公共页面发给了用户B、用户C...

Vibe心法:修改无效时,第一动作应是Shift + F5强制刷新,而非盲目改代码——不要在缓存的幻觉中调试。


7. 本章小结

  1. 🔄 缓存是双刃剑:加速用户访问,但在开发时会阻碍你看到最新修改
  2. 🛠️ DevTools必备:开发时务必开启Network面板的Disable Cache
  3. 💣 终极手段:如果强制刷新也无效,删除.next构建缓存文件夹
  4. ⌨️ 肌肉记忆:Shift + F5(Windows)或Cmd + Shift + R(Mac)