我正在编写一个新站点以取代旧站点,并且需要处理旧的 url 重定向(带有适当的内容迁移)。我想我想使用重写地图而不是开发一堆正则表达式来匹配 b/c 旧网站有各种各样奇怪的 url 格式。但是,我最多可以映射 8,000 个旧网址,我担心这可能会消耗太多资源并降低我的网站速度。任何人都有关于使用大量 url 重写地图性能的任何数据/经验/指导?
谢谢!
我正在编写一个新站点以取代旧站点,并且需要处理旧的 url 重定向(带有适当的内容迁移)。我想我想使用重写地图而不是开发一堆正则表达式来匹配 b/c 旧网站有各种各样奇怪的 url 格式。但是,我最多可以映射 8,000 个旧网址,我担心这可能会消耗太多资源并降低我的网站速度。任何人都有关于使用大量 url 重写地图性能的任何数据/经验/指导?
谢谢!
问题是指 II7 Url Rewrite 模块 2.0 和 rewritemap 中大量项目的实现。将此作为自定义功能添加到 404 页面不是一个好的设计,也不是请求管道的最佳选择。
rewritemap 是专门为处理大型 url 集合而设计的,只要您有内存来保存 8k url 以及其他内存需求,就不应该成为问题。
您可以使用 jmeter 或 Visual Studio 轻松测试服务器,以查看 rewritemap 大小是否对响应时间有任何显着影响。
我不止一次实现了 URL 重定向机制;我主要为此使用 404 处理程序(因为这不会对新 URL 产生开销惩罚);如果请求触发了 404 处理程序,请查看它是否实际上不是重定向;如果是发送 301,否则发送 404。
重定向可以存储在索引查找中(如 c# 中的字典),这保证了您所指示的大小(8k 条目)的接近恒定时间的查找性能。
替代方案可能是使用 HttpModule 或(呃)ISAP 过滤器,但您的“404 aspx 错误页面”是最直接和最容易实现的。
至于性能;对于每天点击量超过 900 万的网站来说,这是一个经过验证的解决方案。