【问题标题】:Adding 1000 routes to MVC5 application向 MVC5 应用程序添加 1000 条路由
【发布时间】:2015-02-04 22:57:32
【问题描述】:

为了避免在 URL 中显示网页的 ID,我正在考虑添加可以帮助根据 URL 文本找出 ID 的路由。

换句话说,

不要/pages/3232/some-webpage

首选/pages/some-webpage(其中some-webpage 表示 ID=3232)

如果我将大约 1000 条这样的路由添加到我们在 8GB RAM Intel Xeon 2.2GHz 双核上运行的 MVC5 应用程序中,会不会有点过头了?

这种方法有什么缺点吗?

【问题讨论】:

  • 你的意思是你还要创建 1000 个动作方法——例如public ActionResult some-webpage()pagesController?为什么不只创建一个接受some-webpage 参数的操作方法?
  • @StephenMuecke 不。我正在考虑满足这 1000 条路线的一项行动。该操作可以提取pageID 的路由值并获取正确的页面。无论如何,让我们看看下面的答案是什么建议。

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


【解决方案1】:

您真正想要做的 :-) 是使用“后备路由”来缓存未由任何其他路由处理的所有请求和控制器操作,然后从 url 中提取 slug(“some-webpage”) ,在您的数据存储中查找正确的资源。

【讨论】:

  • 我还要提一下,这需要 UrlHelperHtml.ActionLink() 的自定义扩展方法来向后创建 url。
  • @ErikPhilips - 如果您继承 RouteBase,则可以在 GetVirtualPath 方法中完成向后查找。无需为此创建自定义 ActionLink 重载。
  • @asp_net 现在 SQL Server db 出现了问题 - 索引 nvarchar(128) 这是页面 url 列是否会导致 1000 行表出现任何性能问题?这听起来不像只是检查
  • @greatbear302 始终取决于服务器的底层性能,但 1.000 条记录永远不会成为问题。在一天结束时,您仍然可以将其缓存在内存中(例如,以最简单的方式在静态字典中)。
猜你喜欢
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 2011-04-13
  • 1970-01-01
相关资源
最近更新 更多