2013-07-14 16 views
5

Sitecore 7 ile, sorgu dizelerimin çoğu özel yol haline geldi. Örneğin: Sonuç olarakMVC İşlemleri için URL'ye Göre Önbellek mi?

OLD: /calendar?year=2013&month=7&day=14 
NEW: /calendar/2013/7/14 

, ben daha çok sorgu dizesi tarafından yerine, URL ile benim render HTML önbellek değişen ihtiyacı içinde buluyorum. Sitecore, MVC renderleme için URL ile önbellek değiştirmenin uygun bir yolunu sunuyor mu?

tüm MVC kaplamalar kendi önbellek anahtarı şu sınıfında üretilir mvc.renderRendering boru hattı, geçmesine bulduk

GÜNCELLEME: geçersiz kılarak

Sitecore.Mvc.Pipelines.Response.RenderRendering.GenerateCacheKey

Bu sınıfın GenerateKey(Rendering rendering, RenderRenderingArgs args) yöntemini kullanarak, site.Request.FilePath kullanarak ham URL'yi başarıyla ekleyebiliyorum. Şu anda karşılaştığım sorun, bu önbellek ayarını oluşturma işleminden nasıl çıkartacağım? Sanırım, render üzerinde yeni bir "VaryByUrl" önbellekleme seçeneği oluşturmam gerekiyor, ama emin değilim. 2

GÜNCELLEME Aşağıdaki kodu kullanarak render tanımı öğenin kapalı özel bir alan okuyabiliyordu. O inşaat, ancak yalnızca Ayrıca VaryByUrl için ancak WebForms mimarisinde bir ihtiyaç vardı

protected override string GenerateKey(Rendering rendering, RenderRenderingArgs args) 
{ 
    var key = base.GenerateKey(rendering, args); 

    if (rendering.RenderingItem.InnerItem.Fields["VaryByUrl"] != null) 
    { 
     var varyByUrl = ((CheckboxField)rendering.RenderingItem.InnerItem.Fields["VaryByUrl"]).Checked; 
     if (varyByUrl) key += GetUrlPart(rendering); 
    } 

    return key; 
} 

cevap

1

tanımını öğe (değil sunum ayrıntılarda render gerçek örneği) (v.6.5.0) bakar .

Sublayout tanımı için, yukarıdaki işlemi nasıl yaptığınıza benzer şekilde VaryByUrl eklemek için Sublayout sınıfını geçersiz kıldım.

Sitecore sürümünüzün hâlâ aynı Rendering Parameters şablonlarını kullandığını varsayarak, oluşturma işleminin bir örneği için,/sitecore/templates/System/Layout/Rendering Parameters kaynak alanında başvurulan sınıfın kendi sürümünüzü oluşturmanız gerekir./Standart Rendering Parametreleri/Önbelleğe Alma/Önbelleğe Alma.

Bu

kaynak alanında sınıf referans: tip = Sitecore.Shell.Applications.Layouts.DeviceEditor.CachingField, Sitecore.Client

İlgili konular