性能重写规则vs routes.maproute

时间:2016-05-02 18:37:54

标签: asp.net-mvc iis asp.net-mvc-routing

我帮助客户进行网络应用程序升级,这包括需要将100多个过时书签路由到新网址的任务。

在回顾以下链接时,我应该更新路由表,而不是在web.config中处理重写规则来处理过时的书签,这似乎很明显:

When to use routes vs. rewrite rules?

http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing

从好奇的角度来看,在web.config中有100到250个重写规则,与直接处理映射的routes.maproute中的条目相反,这将是一个重要的性能影响吗?正确?

1 个答案:

答案 0 :(得分:1)

无论哪种方式,在任何实际路线被击中之前,所有规则都需要执行。因此,任何一种方法使用的性能量都是相似的。

  

我怀疑IIS重写模块会稍快一些,因为它发生在.NET甚至参与请求之前。但是,实际性能取决于您是使用部分URL匹配(最快)还是区分大小写的完整URL匹配(快速)与不区分大小写的完整URL匹配(不那么快)与使用正则表达式(慢)。请注意,并非所有这些选项都可用于IIS重写。

此外,从维护的角度来看,使用IIS重写比映射过时的 URL的路由更有意义。然后,您可以将这些旧URL保留在应用程序的配置之外。

唯一的例外是,如果您想要处理浏览器不遵守HTTP 301的用户边缘情况,并且您希望make a user-friendly redirect page确保用户知道更新的URL并更新其书签。 IIS重写模块只发送301响应,并假设客户端会尊重它(情况并非总是如此)。