Html.ActionLink非常慢

时间:2013-04-15 17:48:22

标签: c# asp.net-mvc razor asp.net-mvc-4

我使用的是MVC 4和Razor View Engine。

我有一个Html.ActionLink("Title", "Action")调用,在foreach循环中调用约200个项目,这需要大约550ms才能完成。如果我用一个简单的字符串替换ActionLink,它只需要~50ms - > Html.ActionLink需要大约500毫秒进行200次迭代!

有没有办法加快速度?

我的循环中有5个,所以我的页面需要> 3s来渲染...
发布版本并且web.config中没有调试属性也无济于事。

1 个答案:

答案 0 :(得分:4)

我结合了评论中的一些提示,以便在整个页面的渲染中从~3s减少到~250ms。最大的变化在哪里:

  • 从我的自定义路由缓存数据库查询( - >每次调用节省2/3次)
  • “预生成”链接并仅替换它的一部分:
     我在foreach循环之前和@{ var link = Html.ActionLink("_USER_", "Edit", new { id = "_ID_" }); }之类的循环中做了@link.Replace("_ID_", user.UserId.ToString())(你不能使用String.Format,因为Html.ActionLink(){0}转义为%7B0%7D }}