你在浏览器地址栏输入 https://myapp.com 然后按回车——中间发生了什么?
整个过程可以分为三个阶段:
第一阶段:寻址
浏览器需要找到 myapp.com 对应哪台服务器。它通过 DNS(域名系统)来查找——可以理解成"电话本"——输入域名,返回 IP 地址。
DNS 查找通常在几十到几百毫秒内完成。如果你访问的域名比较冷门(不常用),这步可能稍慢。常见的网站你的电脑会缓存 DNS 结果,所以第二次访问会更快。
常见 DNS 问题:
一个实用的排查技巧: 当你访问一个网站时提示"找不到服务器",先试试访问其他网站——如果其他网站能打开,说明是你的域名或服务器的问题;如果其他网站也打不开,说明是你的网络问题。这个"对比排查"法适用于很多场景。
第二阶段:请求与响应
浏览器拿到 IP 地址后,向该地址的服务器发送一个 HTTP 请求:
GET / HTTP/1.1
Host: myapp.com
Accept: text/html
服务器收到请求,处理它(可能是读取文件、查询数据库、调用 API),然后返回一个 HTTP 响应:
HTTP/1.1 200 OK
Content-Type: text/html
<!DOCTYPE html>
<html>
...
</html>
状态码速查:
| 状态码 | 含义 | 大概率原因 | 怎么修 |
|---|---|---|---|
| 200 | 正常 | 一切正常 | 不需要修 |
| 301/302 | 重定向 | 页面地址变了,浏览器自动跳转 | 检查跳转目标是否正确 |
| 401 | 未授权 | 需要登录 | 检查认证配置 |
| 403 | 禁止访问 | 没有权限 | 检查权限设置 |
| 404 | 未找到 | 路径写错了或资源不存在 | 检查 URL 拼写或路由配置 |
| 429 | 请求过多 | 触发了频率限制 | 降低请求频率 |
| 500 | 服务器内部错误 | 后端代码出问题了 | 看服务器日志 |
| 502/503 | 服务器不可用 | 服务器挂了或正在重启 | 检查服务器状态 |
在 Vibe Coding 中遇到 404 的标准处理流程:
不需要自己排查——把状态码和 URL 告诉 AI 就行。
第三阶段:渲染
浏览器收到 HTML 后开始解析,一边解析一边请求 HTML 中引用的 CSS、JS、图片等资源,然后构建页面、执行 JavaScript、展示最终结果给用户。
你看到的"页面加载完成了"——实际上是浏览器完成了成百上千个资源的请求、解析、渲染之后的结果。
如果在渲染阶段遇到问题:
标签的路径这些信息都可以直接复制给 AI。比如:"页面加载了,但 CSS 没有生效,控制台显示 style.css 404。"
理解了"浏览器→服务器→浏览器"的循环后,前后端的分工就清楚了:
| 前端(浏览器) | 后端(服务器) | |
|---|---|---|
| 做什么 | 展示界面、响应用户操作 | 处理数据、执行业务逻辑 |
| 运行在哪 | 用户自己的电脑/手机 | 远程服务器 |
| 代码谁写的 | HTML/CSS/JavaScript | 任何后端语言(JS/Python/Go...) |
| 用户能看到吗 | 能(所有代码都下载到浏览器了) | 不能(代码在服务器上) |
关键区别: 前端的代码用户能看到(你无法隐藏 HTML/CSS/JS),所以 API 密钥、数据库密码等敏感信息绝对不要放在前端代码里。
这个区别在 Vibe Coding 中的实际意义:
当你让 AI 生成一个需要调用外部 API 的功能(比如发送邮件、查询天气),AI 应该:
如果你发现 API 密钥出现在前端代码中,直接告诉 AI:
"这个 API 密钥不应该出现在前端代码里,把它移到后端环境变量中,并通过 API 路由调用。"
AI 会理解并修正。
你写的后端代码需要一台电脑 24 小时运行。有三种选择:
对于一人公司项目,推荐从 Serverless 开始(Vercel 或 Cloudflare Pages)。零运维,免费额度够用很久。
一个实用的比喻: 你的电脑是你自己家的厨房。VPS 是你租的一个商用厨房(归你管,需要自己打扫维护)。Serverless 是叫外卖(你把需求告诉平台,平台帮你做好送过来,你不需要管后厨)。当一个人做项目时,叫外卖比租商用厨房轻松得多。
当你需要排查网络问题时,浏览器开发者工具的 Network 面板 是你的最佳帮手。
打开方式:F12 → Network 标签页。
你能看到:
当你向 AI 描述网络问题时,打开 Network 面板,把相关的请求信息复制给 AI。它会告诉你问题出在哪。
Network 面板的常见用法:
一个具体的排查流程:
你:页面加载太慢了,要 8 秒才能显示完整。
AI:打开 Network 面板,看看哪个请求耗时最长。
你:有一个请求耗时 6 秒,是 GET /api/products。
AI:那应该是数据库查询太慢。检查一下 products 表是否有索引,或者查询是否返回了太多数据。
加载时间分析的简单理解:
在 Network 面板中,每个请求都有几个时间指标:
让 AI 解释这些指标:
"Network 面板显示 TTFB 是 4 秒,但 Content Download 只有 100ms。这说明了什么问题?"
你在本地运行 npm run dev 时启动的开发服务器,和生产环境(Vercel 等部署的线上版本)有几点不同:
| 维度 | 本地开发 | 生产环境 |
|---|---|---|
| URL | http://localhost:3000 | https://myapp.com |
| 环境变量 | .env.local | 在部署平台设置 |
| 性能 | 无优化(方便调试) | 有优化(压缩、缓存) |
| 数据库 | 本地 SQLite | 线上 PostgreSQL |
| 文件存储 | 本地文件系统 | 云存储 (S3等) |
最常踩的坑: 本地开发一切正常,部署上线后出问题。
原因通常是:
遇到"本地能跑线上不行"的情况,不要慌张——在 Vibe Coding 中这个问题的标准处理方式:
"这个功能在本地开发环境正常,但部署到 Vercel 后报错。帮我检查可能的环境差异问题。"
AI 会一一检查环境变量、文件路径、数据库连接等常见差异点。
打开你的浏览器开发者工具(F12),访问任意网站,然后对 Claude Code 说:
"我在浏览器开发者工具的 Network 面板中看到了很多请求。请解释这些请求的类型(document、stylesheet、script、xhr)各代表什么,以及如何用 Network 面板排查页面加载慢的问题。"
进阶练习:
让 AI "帮我创建一个简单的 API 路由,在本地用 curl 测试这个 API,然后解释请求和响应的数据流转过程。" 通过这个练习,你会亲眼看到"浏览器发送请求 → 服务器处理 → 返回响应"的完整过程。