8

Kaynak dosyalarınızı (javascript, css, images) Content klasöründen özel Assets klasörüne taşıdım. Ve garip bir davranış fark ettik - bu dosyalar artık tarayıcı tarafından önbelleğe alınmaz ve MvcMiniProfilerAssets klasöründe bulunan her bir kaynak için ayrı bir istek gösteriyor:Ve hala, ASP.NET MVC Content klasörünün büyüsü nedir?

Before moving to Assets folder and after

Ben Content klasör ASP tarafından gerekli olmadığını biliyoruz .NET MVC sözleşmesi, ancak bu neden olur? Content, özellikle birileri tarafından (örneğin, ASP.NET, IISExpress, vb.) Bir şekilde ele alınır mı? Ve statik kaynakları içeren diğer klasörler için önbelleğe alma nasıl zorlanır?

DÜZENLEME: Bir ASP.NET MVC tek davranışı değil, yalnızca MvcMiniProfiler standart davranışı görünüyor. Şu anda bunu kontrol ediyorum ...

DÜZENLEME: Evet, sadece yalnızca bu yolları görmezden MvcMiniProfiler bir default configuration var, ASP.NET MVC ile sorun yoktur: "/mini-profiler-", "/content/", "/scripts/", "/favicon.ico". Ve bu varsayılan kolayca uzatılabilir:

MiniProfiler.Settings.IgnoredPaths = MiniProfiler.Settings.IgnoredPaths 
    .Concat(new [] { "/assets/" }) 
    .ToArray(); 

Bazen bir şeyi kullanmadan önce belgeyi okumak için iyi bir fikirdir;)

+1

Benzer soru - [C# Mini MVC profiler: her statik kaynak için profil zamanları görüntüleniyor gibi görünüyor!] (Http://stackoverflow.com/questions/6648249/c-sharp-mini-mvc-profiler-appears-to -be-görüntüleme-profil-kez-her-stat için) –

cevap

4

, bu MvcMiniProfiler bir özelliği olarak görünmektedir.

Muhtemelen, Cassini aracılığıyla onlara hizmet verdiğinizde görüntüler önbelleğe alınmadı, çünkü Cassini bunun için korkunçtu (örneğin, uygulama/octet-stream olarak png dosyalarını geçirerek), ancak sorun sizin görüntünüzden manüel olarak gizlendi. MvcMiniProfiler.

+0

Teşekkürler, haklıydık :)! Yanıtı aynı dosyada buldum, ancak bu özelliğin bir yerde belgelenip belgelenmediğini ve herhangi bir doküman veya blog yazısı bulunmadığını, sadece kaynak kodunu merak ettim. –

4

Bu garip bir davranıştır.

<system.webServer> 
    <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> 
    </staticContent> 
    </system.webServer> 

Bu kod için gerekli yanıt başlıklarını ekler tarayıcı önbelleğe alma çalışması için: Ancak, uygulamanızın kökü altında web.config dosyası içinde aşağıdaki kodu koydu. Elbette zaman ayarlayabilirsin. Daha fazla bilgi almak için bakınız:

/// <summary> 
/// When <see cref="MiniProfiler.Start"/> is called, if the current request url contains any items in this property, 
/// no profiler will be instantiated and no results will be displayed. 
/// Default value is { "/mini-profiler-", "/content/", "/scripts/", "/favicon.ico" }. 
/// </summary> 
[DefaultValue(new string[] { "/mini-profiler-", "/content/", "/scripts/", "/favicon.ico" })] 
public static string[] IgnoredPaths { get; set; } 

Source: Eğer güncellemede belirten konum olarak http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

+0

Yea, teşekkürler, kesinlikle çalışıyor. –