6

我正在使用 MVC 4 和 Razor 视图引擎。

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

有没有办法加快这个速度?

我的循环中有 5 个这样的页面,所以我的页面需要 >3 秒才能呈现......
发布版本并且 web.config 中没有调试属性无济于事。

4

1 回答 1

5

我结合了评论中的一些技巧,将整个页面的渲染从大约 3 秒减少到大约 250 毫秒。最大的变化包括:

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