状态码问题 301 302

设计一个短链服务,短链是 301 跳转 还是 302 跳转

答案应该是看目的:

用户第一次访问某个短链接后,如果服务器返回301状态码,则这个用户在后续多次访问统一短链接,浏览器会直接请求跳转地址,而不是短链接地址,这样一来服务器端就无法收到用户的请求。

如果服务器返回302状态码,且告知浏览器不缓存短链接请求,那么用户每次访问短链接,都会先去短链接服务端取回长链接地址,然后在跳转。

  1. 从语义上来说,301跳转更为合适,因为是永久跳转,不会每次都访问服务端,还可以减小服务端压力。

  2. 但如果使用301跳转,服务端就无法精确搜集用户的访问行为了。

  3. 相反302跳转会导致服务端压力增大,但服务端此时就可精确搜集用户的访问行为。基于用户的访问行为,可以做一些分析,得出一些有意思的结论。比如可以根据用户IP地址得出用户区域分布情况,根据User-Agent消息头分析出用户使用不同的操作系统以及浏览器比例等等。