website-check 的第一步:先把目标整理对

1. 为什么要先规范化输入

用户输入到诊断工具里的内容往往不统一:

  • 只输入域名
  • 输入完整 URL
  • 带路径、带参数、带尾斜杠
  • 甚至把不同格式混着贴进来

如果不先统一,前后端就会把同一个目标当成不同对象,导致缓存、测试和结果都变得不稳定。

2. 前后端都要做一次

这个模块的关键点是:前端要做,后端也要做。

前端规范化是为了让用户体验更顺滑,后端规范化是为了让 API 契约不漂移。这样可以避免:

  • 同一个站点被重复诊断
  • 带路径的 URL 被误判
  • 测试中出现“页面能跑、API 失败”的情况

3. 代码里的实现

主要逻辑在这两个地方:

  • src/app/tools/website-check/WebsiteCheckClient.tsx
  • src/app/api/diagnostic/route.ts

核心动作就是:把输入统一成 hostname,再继续后面的 DNS / HTTP / SSL / CDN 检测。

4. 这个步骤的重要性

很多人会把这一步看得很小,但它实际上决定了:

  • 结果是否稳定
  • 缓存是否能复用
  • 测试是否容易写
  • 故障排查是否容易对齐

如果目标都没整理对,后面的诊断基本都会漂。