【发布时间】:2014-08-27 07:17:37
【问题描述】:
我正在使用 asp.net mvc 4 Web 应用程序中的属性路由。它是一个支持 15 种不同文化和 20 多种语言的单一应用程序。这样做的结果是,我的路由表非常大,超过 3000 条路由。有这么多路线的主要原因是路线是按语言本地化的。这样做的后续影响是,它会导致路由查找速度变慢,进而导致网站性能不佳。
我正在寻找提高性能的方法。所以寻找提示。不幸的是,由于业务限制,我无法更改我的路由结构。我有这么多路线的主要原因是由于翻译 - 每种语言的路由表中都有一个条目。有什么办法可以避免这种情况?
另外,我在路由表中注意到 POST 方法的条目 - 这是必需的吗?是否可以避免在 POST 的路由表中出现条目?
是否可以包含任何形式的缓存以避免路由表查找,而是从内存中读取?
属性路由或一般路由的任何性能优化技巧都会非常好。
【问题讨论】:
-
看看superscribe.org 了解一些非常酷的基于图的路由。
-
谢谢,但如果可能的话,我宁愿优化而不是改变。
-
最初的 Stack Overflow 开发人员中有一篇关于优化 MVC3 路由的相当老的帖子。我不确定它是否仍然适用于 MVC4,或者您是否会从中受益。 samsaffron.com/archive/2011/10/13/…。不过,我强烈建议您在开始“优化”之前衡量您的减速在哪里。
-
如果我们可以将 RouteTable.Routes 静态属性设置为 RouteCollection 的新实例,我们可以覆盖它的 GetVirtualPath 和 GetEnumerator 方法,那将是一个不错的功能。不幸的是,这些方法不是虚拟的,否则您可以将其作为字典或其他东西,以便通过路径中的语言和文化进行更智能的查找。
标签: asp.net-mvc asp.net-mvc-4 routing routes attributerouting