重定向性能

重定向怎么发出去,是这套系统里最便宜也最难改的一个决定。用 301,浏览器会把跳转关系缓存下来,第二次访问直接落地、延迟为零,可你的服务器再也收不到这次点击,用户改了目标地址也照样跳到旧的;用 302,每次点击都会回到你手上,代价是多一次往返。

状态码的语义只是起点,缓存进场之后这笔账要重算一遍:302 加上 Redis 缓存大约 5ms,而 301 的浏览器缓存虽然快到 0ms,却让你既统计不准也改不动。缓存本身还有一堆副作用要处理——Cache-Aside 的读写流程、更新时是主动失效还是双写、恶意请求打穿缓存要靠缓存空值挡住、大批键同时过期要靠随机过期时间打散。而真实客户的要求又把这件事推了回来:电商客户坚持要 301 做 SEO,答案不是二选一,而是默认坚持 302、给这类客户留一个可配置的 301 模式,再配上双层缓存与监控面板。

读完你应该能解释 301 和 302 分别牺牲了什么、为什么 302 加上服务端缓存足以支撑短链场景,并能设计一套在「链接会变」和「要统计」的前提下仍然成立的跳转链路。

章节

发现内容有问题?

告诉我们哪里需要改进。