protected void Apply(T ruleContext, string paramter, string value) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNull(paramter, "paramter"); RenderingSettings settings = ruleContext.Reference.Settings; RenderingCaching caching = settings.Caching; if (caching != null) { if ((caching.Cacheable && !caching.VaryByData) && (settings.DataSource != paramter)) { string name; var renderingItem = ruleContext.Reference.RenderingItem; if (renderingItem != null) { name = renderingItem.Name; } else { var renderingId = ruleContext.Reference.RenderingID; { name = renderingId.ToString(); } } Log.Warn(string.Format("A rule overwrites the data source of the item {0} which is cachable and not vary by data. Possibly, this value is not be used as the rendering is cached.", name), GetType()); } } }
protected virtual void AddCachingSettings(Rendering rendering) { RenderingCaching renderingCaching = rendering.RenderingItem.Caching; rendering.Caching.VaryByData = renderingCaching.VaryByData; rendering.Caching.VaryByDevice = renderingCaching.VaryByDevice; rendering.Caching.VaryByLogin = renderingCaching.VaryByLogin; rendering.Caching.VaryByParameters = renderingCaching.VaryByParm; rendering.Caching.VaryByQueryString = renderingCaching.VaryByQueryString; rendering.Caching.VaryByUser = renderingCaching.VaryByUser; rendering[ClearOnIndexUpdateCacheKey] = renderingCaching.ClearOnIndexUpdate ? "1" : string.Empty; }