コード例 #1
0
			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());
	    }
コード例 #2
0
		/// <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;
		}
コード例 #3
0
	    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;
	    }
コード例 #4
0
        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);
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        /// <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);
        }