【问题标题】:ASP.NET MVC Routing - Thousands of URL'sASP.NET MVC 路由 - 数以千计的 URL
【发布时间】:2014-02-17 05:54:59
【问题描述】:

我的电子商务应用程序将商品页面的 URL 存储在数据库中。这些 URL 有数千个,它们都是根级别的(即 domain-name.com/{item-page-url})。

如果我通过使用简单的 for 循环为每个 URL 调用 RouteCollection.MapRoute 将所有这些 URL 添加到路由表,则站点性能会呈指数级下降。为什么?原因是here

我应该如何正确处理这种情况?将所有路由添加到路由表似乎并不正确(更不用说性能几乎证实了这一点)。我已经看到了一些关于检查所有传入 URL 然后尝试将其与数据库中的 URL 匹配的想法,但不完全理解我将如何实现它,我也不确定这是否是最好的方法。

有什么想法或建议吗?这似乎并不少见,但我还没有找到具体的方法来处理它。

【问题讨论】:

  • 每个{item-page-url} 是什么样的?你能举几个例子吗?
  • 当然.... www.mydomain.com/car-wash-tri-fold-brochure-template.aspx 或 www.mydomain.com/child-care-pediatrician-office-brochure-template .aspx
  • 在这里回答了类似的问题:stackoverflow.com/questions/13558541/…。它可能会帮助你。
  • 就是这样。路线限制解决了它..直到我看到你的帖子才明白怎么做。谢谢!

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


【解决方案1】:

如果您可以将路线更改为 mycreativeshop.com/product/my-product-name 然后将以下路线添加到路线配置文件的顶部可以帮助您。

routes.MapRoute(
                "CustomRouteProduct",
                "product/{id}",
                new { controller = "yourcontrollername", action = "Index" }
            );

并在操作映射中使用您的产品名称的参数值

    public ActionResult Index(string id)
            {
             //var prdName = id.Replace("-", " ");
            //look up prdName in database                
            return View();
            }

更新 添加以下作为顶级路线

routes.MapRoute(
                "CustomRouteProductZX",
                "{id}",
                new { controller = "Content", action = "Index" }
            );

通过访问http://localhost:12025/Car-Paint,我被定向到 ContentController 的 Index 操作,在那里我访问了参数 id

中的“Car-Paint

但是,上面有 http://localhost:12025/Home/ 这样的块模式(这里 Home 也被视为产品)

【讨论】:

  • 是的,我非常熟悉如何做到这一点。问题是我需要处理直接挂在域之外的根级 URL。
猜你喜欢
  • 1970-01-01
  • 2010-11-22
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多