我的电子商务应用程序存储数据库中项目页面的URL。这些URL有数千个,它们都是根级别(即domain-name.com/{item-page-url})。
如果我将所有这些URL添加到路由表中,则使用简单的for循环为每个URL站点调用RouteCollection.MapRoute,性能会以指数方式降级。为什么?原因是here。
我该如何妥善处理这种情况?将所有路由添加到路由表似乎并不正确(更不用说性能几乎证实了这一点)。我已经看到了一些关于检查所有传入的URL然后尝试将其与数据库中的URL相匹配但未完全理解我是如何实现它的想法,但我也不确定它是否是最好的方法。
有任何想法或建议吗?这似乎并不是那么罕见,但我还没有找到一个具体的方法来处理它。
答案 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
但是,上面有上面的块模式,如http://localhost:12025/Home/
(这里Home也被视为产品)