Con Sitecore 7, la maggior parte delle mie stringhe di query sono diventate percorsi personalizzati. Per esempio:Vary Cache per URL per rendering MVC?
OLD: /calendar?year=2013&month=7&day=14
NEW: /calendar/2013/7/14
Di conseguenza, mi ritrovo in bisogno di variare la cache HTML dei miei rendering tramite URL, piuttosto che dalla stringa di query. Sitecore fornisce un modo conveniente di variare la cache per URL per i rendering MVC?
UPDATE
ho trovato che tutti i rendering MVC passano attraverso la mvc.renderRendering gasdotto, dove la loro chiave di cache viene generato nella seguente classe:
Sitecore.Mvc.Pipelines.Response.RenderRendering.GenerateCacheKey
Con l'override il metodo GenerateKey(Rendering rendering, RenderRenderingArgs args)
di questa classe, sono in grado di aggiungere l'URL raw con successo utilizzando site.Request.FilePath
. Il problema che devo affrontare ora è come estrarre questa impostazione della cache dal rendering stesso? Penso di aver bisogno di creare una nuova opzione di caching "VaryByUrl" sul rendering, ma non ne sono del tutto sicuro.
UPDATE 2
sono stato in grado di leggere un campo personalizzato al largo della voce definizione di rendering utilizzando il seguente codice. Funziona, ma si guarda solo alla voce definizione (non l'istanza effettiva del rendering nei dettagli di presentazione)
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;
}