SO问题的网址格式如下:
https://stackoverflow.com/questions/123456/description-from-title-of-question
我已经知道的是使用MVC路由完成的,我自己也是这样做的。
当您转到相同的网址时,但最后没有友好位:
https://stackoverflow.com/questions/123456
然后StackOverflow会为您添加友好位,您最终会在浏览器地址栏中显示相同的地址:
https://stackoverflow.com/questions/123456/description-from-title-of-question
我的问题是,SO是如何做到这一点的?它是否涉及到数据库,获取标题描述并重定向到包含最后标题的路由(创建新请求)?或者MVC路由中有哪些东西可以处理这个问题?或者它是通过javascript或其他东西添加到客户端?
我也有兴趣听取其他人对这方面的好方法的看法,以及SO如何做到这一点。
答案 0 :(得分:1)
这不是MVC路由,他们从URL获取ID并将(HTTP 302
)重定向到完全合格的SEO友好URL。也就是说,重定向由服务器完成,而不是使用JavaScript。
他们使用广泛的缓存,因此大多数时候他们不会获取数据库,而是内存映射表或某些二级缓存,例如Redis。
阅读有关StackOverflow缓存的深入概述:https://meta.stackexchange.com/a/69172