2011-12-16 11 views
9

Ho appena collegato il mvc-mini-profiler (grazie COSÌ!) Sul mio sito e mi sono guardato attorno per vedere quanto bene ho fatto fino a questo punto (è il mio primo incontro principale con linq a entità e mvc). Finora tutto sembra a posto, tuttavia sono sempre alla ricerca di modi per migliorare i tempi di risposta. A questo punto sembra che l'unica grande spinta che potrei ottenere sarebbe quella di ridurre il tempo necessario per rendere le singole visualizzazioni su ciascuna delle mie pagine.MVC Render Speedup

profiler screeny

Si può vedere dalla mia screeny che il rendering della vista Blog è il compito più longevo. So che 30 ms è già molto veloce, ma scommetto che ci sono ancora alcuni trucchi che posso tirare per ottenere questi numeri ancora più bassi.

Quindi la domanda è questa: Come posso ridurre i tempi di rendering delle viste? So che la memorizzazione nella cache di viste dinamiche in qualcosa di simile a HttpRuntime.Cache può essere di aiuto, ma sono persino in grado di vedere diverse durate di ms per il rendering statico della vista. Quali tecniche usi per ridurre i tempi di rendering delle tue visualizzazioni?

+0

Stai creando oggetti nella vista dal db? È difficile offrire suggerimenti senza alcuna idea di cosa sta succedendo nel tuo codice. –

+0

Puoi ripetere il test, ma assicurati di eseguire l'app MVC sotto 'Rilascio'. Quanto è complesso 'Blog'? Chiama più azioni secondarie o parziali? – Omar

+0

@TravisJ In alcuni di essi, sì. In altri ho solo delle vedute statiche. – JesseBuesking

risposta

3

suggerisco 2 cose (se non lo avete ancora fatto) ...

  1. Rimuovere ViewEngines inutilizzati. Quindi se il tuo progetto utilizza solo il motore di visualizzazione del rasoio, fallo in global.asax su Application_Start();

    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 
    

    o

    ViewEngines.Engines.Add(new WebFormViewEngine()); 
    

    se si utilizza il WebFormsViewEngine solo

  2. Il più grande improvment è quello di utilizzare il OutputCacheAttribute per memorizzare nella cache il codice html. Non credo che il tuo blog cambia su ogni richiesta;)

    public class BlogController : Controller 
    { 
        [OutputCache] 
        public ActionResult Index() 
        { 
         // do something here 
         return View(); 
        } 
    } 
    

È possibile impostare la cache-durata e di più. Partenza: MSDN - OutputCacheAttribute.

+0

Cosa causerebbe '[OutputCache]' per ignorare la memorizzazione nella cache?Quando imposto la durata a 60, sembra che richieda più tempo ogni volta dopo il primo rendering (il tempo su ogni rendering è uguale al tempo impiegato per il primo rendering: sembra che stia ricompilando ogni volta). – JesseBuesking

+0

Non proprio chiaro cosa intendi (troppo stanco forse);). Inserisci un punto di interruzione nella "visualizzazione di ritorno()" per verificare se le impostazioni di CacheAttribute funzionano. Nessun guadagno di prestazioni? Ci dovrebbe essere un tempo di caricamento migliore. Si prega di risposta, perché questo dovrebbe funzionare. – dknaack

+0

Darò un'occhiata a questo quando ho finito il lavoro. In realtà sto pensando che potrebbe sembrare come se fosse lento, ma in realtà anche i risultati del mini-profiler sono probabilmente archiviati nella cache. Riderò se è così. Inoltre sto usando solo il rasoio, quindi testerò l'impatto del tuo primo suggerimento mentre ci sono. – JesseBuesking