ASP.NET MVC路由 - 成千上万的URL

时间:2014-02-17 05:54:59

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

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

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

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

有任何想法或建议吗?这似乎并不是那么罕见,但我还没有找到一个具体的方法来处理它。

1 个答案:

答案 0 :(得分:0)

如果您可以更改路线 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也被视为产品)