2011-12-16 20 views
9

Sitemdeki mvc-mini-profiler'u (teşekkürler SO!) Bağladım ve bu noktaya kadar ne kadar iyi yaptığımı görmek için etrafa bakıyordum (bu benim ilkelerim ve mvc ile linq ile ilk büyük uğraşım). Şimdiye kadar her şey iyi görünüyor, ancak her zaman yanıt sürelerini iyileştirmenin yollarını arıyorum. Bu noktada, alabildiğim en büyük destek, sayfaların her birinde bireysel görüntülerin oluşturulma süresini kısaltmaktan olabileceğine benziyor.MVC Render Speedup

profiler screeny

Sen Blog bakış render uzun soluklu bir iştir benim screenY görebilirsiniz. Biliyorum ki 30ms zaten çok hızlı, ama bahse girerim ki bu rakamları daha da alçaltmak için çekebileceğim bazı hileler var.

Yani soru şu: Görünüm oluşturma sürelerini nasıl azaltabilirim?HttpRuntime.Cache gibi dinamik görünümlerin önbelleğe alınmasının yardımcı olabileceğini biliyorum, ancak statik görünüm oluşturma için birkaç ms süreyi bile görüyorum. Görünümlerinizin oluşturulma sürelerini azaltmak için hangi teknikleri kullanıyorsunuz? (Eğer henüz yapmış yoksa)

+0

db'den görünümde nesneler mi oluşturuyorsunuz? Kodunuzda olup bitenler hakkında herhangi bir fikre sahip olmadan öneriler sunmak zordur. –

+0

Testinizi tekrar yapabilir misiniz, ancak MVC uygulamasını 'Release' altında çalıştırdığınızdan emin olun. Blog ne kadar karmaşık? Birden fazla çocuk eylemi mi yoksa kısmi mi çağırıyor? – Omar

+0

@TravisJ Bazılarında, evet. Diğerlerinde sadece statik görünümler alıyorum. – JesseBuesking

cevap

3

Ben

  1. kullanılmayan ViewEngines çıkarın ... 2 şey önermek. Dolayısıyla, projeniz yalnızca jiletli görüntüleme motorunu kullanıyorsa, bunu Application_Start() üzerindeki global.asax dosyasında yapın;

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

    veya

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

    Eğer WebFormsViewEngine kullanırsanız

    sadece

  2. büyük iyileştirme html önbelleğe almak OutputCacheAttribute kullanmaktır.

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

Önbellek-süresini ve daha ayarlayabilirsiniz); senin blog her on Request değişir sanmıyorum. Check out: MSDN - OutputCacheAttribute.

+0

'[OutputCache]' önbelleğe almayı yoksaymaya neden olur?Süreyi 60 olarak ayarladığım zaman, ilk oluşturulduktan sonra her zaman için daha uzun sürüyor gibi görünüyor (her bir oluşturmadaki zaman, ilk oluşturma için harcanan süreye eşittir: her seferinde yeniden derleme yapıyor gibi görünüyor). – JesseBuesking

+0

Gerçekten ne demek istediğini net değil (belki de çok yorgun);). CacheAttribute Ayarlarınızın çalışıp çalışmadığını kontrol etmek için "Return View()" görünümünüze bir kesme noktası koyun. Performans artışı yok mu? Daha iyi bir yükleme süresi olmalı. Lütfen cevap verin, bunun işe yaramasına neden olun. – dknaack

+0

İşim bittiğinde buna bir göz atacağım. Aslında sanırım ** sanki yavaş çalışıyor gibi görünebilir, ama aslında mini-profiler sonuçlarının kendileri de önbelleğe alınabiliyor. Öyle ise güleceğim. Ayrıca sadece jilet kullanıyorum, böylece ilk önerinizin etkisini test ediyorum. – JesseBuesking