Первый вызов Url.Action на странице выполняется медленно

У меня проблема с производительностью с довольно простым представлением ASP.MVC.

Это журнал -на странице, который должен быть почти мгновенным, но занимает около полсекунды.

После долгих копаний оказалось, что проблема заключается в первом вызовеUrl.Action-это занимает около 450 мс (согласно MiniProfiler)но это кажется безумно медленным.

Последующие вызовы Url.Actionзанимают

Это согласуется с тем, использую ли я Url.Action("action", "controller")или Url.Action("action"), но, кажется, не происходит, если я использую Url.Content("~/controller/action"). Это также происходит, когда я звоню Html.BeginForm("action").

Кто-нибудь знает, что вызывает это?

Изучение источника позволяет предположить, что виновником может быть RouteCollection.GetVirtualPath, так как это общее для Url.Actionи Html.BeginForm. Однако, конечно, это используется повсеместно? Я имею в виду, что ½ секунды — это слишком медленно.

У меня около 20 пользовательских маршрутов (, это довольно большое приложение с некоторыми устаревшими страницами WebForms ), но даже тогда время кажется слишком медленным.

Есть идеи, как это исправить?

6
задан Keith 15 August 2012 в 11:56
поделиться