W Sitecore 7 większość moich ciągów zapytań stała się niestandardowymi trasami. Na przykład:Zmienić pamięć podręczną według adresu URL dla MVC Rendering?
OLD: /calendar?year=2013&month=7&day=14
NEW: /calendar/2013/7/14
W rezultacie, znajdę się w potrzebie różnym cache HTML moich renderingi przez URL, zamiast przez ciąg kwerendy. Czy Sitecore zapewnia wygodny sposób różnicowania pamięci podręcznej przez URL dla renderowania MVC?
UPDATE
I odkryli, że wszystkie wizualizacje MVC przechodzą przez mvc.renderRendering rurociągu, gdzie ich klucz cache jest generowany w poniższej klasy:
Sitecore.Mvc.Pipelines.Response.RenderRendering.GenerateCacheKey
nadrzędnymi metoda GenerateKey(Rendering rendering, RenderRenderingArgs args)
dla tej klasy, jestem w stanie z powodzeniem dołączyć surowy URL za pomocą site.Request.FilePath
. Problemem, z którym teraz borykam się, jest to, jak wyodrębnić to ustawienie pamięci podręcznej z samego renderowania? Myślę, że muszę utworzyć nową opcję buforowania "VaryByUrl" w renderowaniu, ale nie jestem całkiem pewien.
UPDATE 2
byłem w stanie odczytać niestandardowe pole off elementu rozdzielczości renderowania przy użyciu następującego kodu. To działa, ale tylko wygląda na element rozdzielczości (nie faktyczne wystąpienie renderowania w szczegółach prezentacja)
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;
}