我有一个相当简单的 ASP.MVC 视图的性能问题。
这是一个应该几乎是即时的登录页面,但大约需要半秒钟。
经过大量挖掘后,问题似乎是第一次调用Url.Action
- 它大约需要 450 毫秒(根据 MiniProfiler ),但这似乎非常慢。
随后的调用时间Url.Action
小于 1 毫秒,这更符合我的预期。
无论我使用Url.Action("action", "controller")
或Url.Action("action")
,这都是一致的,但如果我使用 ,似乎不会发生Url.Content("~/controller/action")
。当我打电话时也会发生这种情况Html.BeginForm("action")
。
有谁知道是什么原因造成的?
对源头的挖掘表明这RouteCollection.GetVirtualPath
可能是罪魁祸首,因为这对Url.Action
和Html.BeginForm
. 但是,肯定到处都在使用它吗?我的意思是,½ 秒太慢了。
我有 20 条左右的自定义路线(这是一个相当大的应用程序,带有一些旧版 WebForms 页面),但即便如此,时间似乎也太慢了。
任何想法如何解决它?