【问题标题】:Optimize Performance or Attribute Routing and Routing table优化性能或属性路由和路由表
【发布时间】: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


【解决方案1】:

这是一个复杂的问题,因为没有人清楚地知道您的路由表有多复杂,以及在重新组织 Web 应用程序时您面临哪些业务限制。所以我能做的就是提示一些选项供您探索:

以上建议可以基于区域设置或语言。例如,当您访问 www.apple.com 时,您会发现他们在加拿大或意大利的本地网站设置为虚拟目录“www.apple.com/ca”或“www.apple.com/it”。

希望这会有所帮助! 亨利

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2015-03-22
    • 2016-12-17
    • 2017-03-24
    相关资源
    最近更新 更多