5

Zajmuję się tworzeniem strony internetowej na platformie Azure, z mvc5. Używam routingu atrybutów, z trasami i prefiksem trasy na kontrolerach. Dzwonię za pomocą helpera action.link. Nie nazwałem swoich tras.Słaba wydajność i powolna strona internetowa Dzięki MVC 5 Atrybucja atrybutów

zrobiłem następujące w moim route.config:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapMvcAttributeRoutes(); 
routes.LowercaseUrls = true; 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

Moi kontrolery jak:

[OutputCache(Duration = 600, Location = System.Web.UI.OutputCacheLocation.Client)] 
[RoutePrefix("istanbul/kadikoy")] 
[Route("{action=index}")] 
public class KadikoyController : Controller 
{ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

    [Route("kadikoy-tarihi")] 
    public ActionResult KadikoyTarihi() 

mam bardzo słabe wyniki, jak czas odpowiedzi serwera, czyli 9.6s

Jeśli skomentuję kody tras atrybutów, z domyślnym routingiem, mam czas reakcji serwera 2.1 s.

Dziękuję za odpowiedzi.

+2

Czy słaba wydajność występuje tylko podczas pierwszego żądania do IIS? Może to być spowodowane przez usługi IIS tworzące początkowy proces roboczy. – alex

+0

Widzę to samo, a konkretnie to wezwanie do odwzorowania przypisanych tras. Podejrzewam, że tak jest, ponieważ skanuje więcej złożeń niż to konieczne, aby znaleźć wszystkie atrybuty, a może po prostu odbicie jest wolniejsze niż definicje tras programowych. –

Odpowiedz

0

Okazuje się, że naprawdę drogim bitem tej operacji nie jest mapowanie przypisanych tras, ponieważ zanim to się stanie, MVC musi utworzyć ControllerFactory i pobrać wszystkie typy kontrolerów. Ten proces odpowiada za 1245 ms w moim projekcie, podczas gdy reszta funkcji MapMvcAttributeRoutes() zajmuje około 45 ms. Domyślam się, że jeśli nie użyjesz routingu atrybutów, to kontrolerzy znajdą je w razie potrzeby, a nie wszystkie naraz.

Powiązane problemy