protected virtual string GetCustomPart(Rendering rendering, RenderingCachingDefinition definition) { object typeImplementation = GetInstanceOfType(definition.VaryByCustomImplementationType); ICustomCacheable keyProvider = typeImplementation as ICustomCacheable; if (keyProvider == null) return string.Empty; return string.Format("_#custom:{0}", keyProvider.GetCustomCacheKeyPart()); }
/// <summary> /// Determines whether the specified rendering is cacheable. Extending Sitecore functionality to check if /// this shoudl be cached for GET requests. If Request.HttpMethod != "GET, return false. /// </summary> /// <param name="rendering">The rendering.</param> /// <param name="args">The arguments.</param> /// <returns></returns> protected override bool IsCacheable(Rendering rendering, RenderRenderingArgs args) { var isCacheable = base.IsCacheable(rendering, args); if (isCacheable) { RenderingCachingDefinition definition = new RenderingCachingDefinition(rendering); if (definition.CacheGetOnly && args.PageContext.RequestContext.HttpContext.Request.HttpMethod != "GET") { return false; } } return isCacheable; }
protected override string GenerateKey(Rendering rendering, RenderRenderingArgs args) { string key = base.GenerateKey(rendering, args); if (!string.IsNullOrEmpty(key)) { RenderingCachingDefinition definition = new RenderingCachingDefinition(rendering); if (definition.VaryByCustom) { key = string.Format("{0}{1}", key, GetCustomPart(rendering, definition)); } } return key; }
protected override string GenerateKey(global::Sitecore.Mvc.Presentation.Rendering rendering, RenderRenderingArgs args) { string text = rendering.Caching.CacheKey.OrIfEmpty(args.Rendering.Renderer.ValueOrDefault((Renderer renderer) => renderer.CacheKey)); string result; if (StringExtensions.IsEmptyOrNull(text)) { result = null; } else { string text2 = text + "_#lang:" + Language.Current.Name.ToUpper(); RenderingCachingDefinition caching = rendering.Caching; if (rendering["ClearOnIndexUpdate"] == "1") { text2 += "_#index"; } if (caching.VaryByData) { text2 += this.GetDataPart(rendering); } if (caching.VaryByDevice) { text2 += this.GetDevicePart(rendering); } if (caching.VaryByLogin) { text2 += this.GetLoginPart(rendering); } if (caching.VaryByUser) { text2 += this.GetUserPart(rendering); } if (caching.VaryByParameters) { text2 += this.GetParametersPart(rendering); } if (caching.VaryByQueryString) { text2 += this.GetQueryStringPart(rendering); } result = text2; } return(result); }
public RenderingDiagnostics(HtmlTextWriter writer, string renderingName, RenderingCachingDefinition cachingDefinition) { Assert.IsNotNull(writer, "HtmlTextWriter cannot be null"); Assert.IsNotNull(renderingName, "Rendering name cannot be null"); _writer = writer; _renderingName = renderingName; _cacheable = cachingDefinition.Cacheable; _varyByData = cachingDefinition.VaryByData; _varyByDevice = cachingDefinition.VaryByDevice; _varyByLogin = cachingDefinition.VaryByLogin; _varyByParm = cachingDefinition.VaryByParameters; _varyByQueryString = cachingDefinition.VaryByQueryString; _varyByUser = cachingDefinition.VaryByUser; _varyByCustom = cachingDefinition.CacheKey; _timeout = cachingDefinition.Timeout; _timer = new Stopwatch(); RenderingStartDiagnostics(); }
public RenderingDiagnostics(HtmlTextWriter writer, string renderingName, RenderingCachingDefinition cachingDefinition) { Assert.IsNotNull(writer, "HtmlTextWriter cannot be null"); Assert.IsNotNull(renderingName, "Rendering name cannot be null"); _writer = writer; _renderingName = renderingName; _cacheable = cachingDefinition.Cacheable; _varyByData = cachingDefinition.VaryByData; _varyByDevice = cachingDefinition.VaryByDevice; _varyByLogin = cachingDefinition.VaryByLogin; _varyByParm = cachingDefinition.VaryByParameters; _varyByQueryString = cachingDefinition.VaryByQueryString; _varyByUser = cachingDefinition.VaryByUser; _varyByCustom = cachingDefinition.CacheKey; _timeout = cachingDefinition.Timeout; _timer = new Stopwatch(); RenderingStartDiagnostics(); }
/// <summary> /// Generates the Cache Key for the rendering. /// </summary> /// <param name="rendering">The Rendering</param> /// <param name="args">The Arguments</param> /// <returns>The Cache Key</returns> protected override string GenerateKey(Rendering rendering, RenderRenderingArgs args) { var str1 = rendering.Caching.CacheKey.OrIfEmpty(args.Rendering.Renderer.ValueOrDefault(renderer => renderer.CacheKey)); if (str1.IsEmptyOrNull()) { return(null); } var str2 = str1 + "_#lang:" + Language.Current.Name.ToUpper() + this.GetAreaPart(args); str2 += rendering.RenderingItem.ID.ToShortID().ToString(); RenderingCachingDefinition caching = rendering.Caching; if (caching.VaryByData) { str2 += this.GetDataPart(rendering); } if (caching.VaryByDevice) { str2 += this.GetDevicePart(rendering); } if (caching.VaryByLogin) { str2 += this.GetLoginPart(rendering); } if (caching.VaryByUser) { str2 += this.GetUserPart(rendering); } if (caching.VaryByParameters) { str2 += this.GetParametersPart(rendering); } if (caching.VaryByQueryString) { str2 += this.GetQueryStringPart(rendering); } return(str2); }