예제 #1
0
		/// <summary>
		/// Configures ASP.Net's Cache policy based on properties set
		/// </summary>
		/// <param name="policy">cache policy to set</param>
		void ICachePolicyConfigurer.Configure(HttpCachePolicy policy)
		{
			policy.SetAllowResponseInBrowserHistory(allowInHistory);
			policy.SetCacheability(cacheability);
			policy.SetOmitVaryStar(omitVaryStar);
			policy.SetRevalidation(revalidation);
			policy.SetSlidingExpiration(slidingExpiration);
			policy.SetValidUntilExpires(validUntilExpires);

			if (duration != 0)
			{
				policy.SetExpires(DateTime.Now.AddSeconds(duration));
			}

			if (varyByContentEncodings != null)
			{
				foreach (var header in varyByContentEncodings.Split(','))
				{
					policy.VaryByContentEncodings[header.Trim()] = true;
				}
			}

			if (varyByCustom != null)
			{
				policy.SetVaryByCustom(varyByCustom);
			}

			if (varyByHeaders != null)
			{
				foreach (var header in varyByHeaders.Split(','))
				{
					policy.VaryByHeaders[header.Trim()] = true;
				}
			}

			if (varyByParams != null)
			{
				foreach (var param in varyByParams.Split(','))
				{
					policy.VaryByParams[param.Trim()] = true;
				}
			}

			if (cacheExtension != null)
			{
				policy.AppendCacheExtension(cacheExtension);
			}

			if (setEtagFromFileDependencies)
			{
				policy.SetETagFromFileDependencies();
			}

			if (setLastModifiedFromFileDependencies)
			{
				policy.SetLastModifiedFromFileDependencies();
			}

			if (setNoServerCaching)
			{
				policy.SetNoServerCaching();
			}

			if (setNoStore)
			{
				policy.SetNoStore();
			}

			if (setNoTransforms)
			{
				policy.SetNoTransforms();
			}

			if (etag != null)
			{
				policy.SetETag(etag);
			}

			if (isLastModifiedSet)
			{
				policy.SetLastModified(lastModified);
			}

			if (isMaxAgeSet)
			{
				policy.SetMaxAge(TimeSpan.FromSeconds(maxAge));
			}

			if (isProxyMaxAgeSet)
			{
				policy.SetProxyMaxAge(TimeSpan.FromSeconds(proxyMaxAge));
			}
		}
 public override void SetMaxAge(TimeSpan delta)
 {
     _httpCachePolicy.SetMaxAge(delta);
 }
예제 #3
0
        /// <summary>
        /// Set the response cache headers for WebResource
        /// </summary>
        /// <param name="cache"></param>
        /// <param name="etag"></param>
        private static void SetCachingHeadersForWebResource(HttpCachePolicy cache, int etag)
        {
            cache.VaryByParams["d"] = true;
            cache.VaryByHeaders["Accept-Encoding"] = true;
            cache.SetOmitVaryStar(true);

            // Keep in the client cache for the time configured in the Web.Config
            cache.SetExpires(DateTime.UtcNow.AddDays(Settings.Instance.DaysInCache));
            cache.SetMaxAge(TimeSpan.FromDays(Settings.Instance.DaysInCache));
            cache.SetValidUntilExpires(true);
            cache.SetLastModified(DateTime.UtcNow);

            cache.SetCacheability(HttpCacheability.Public);

            cache.SetETag(string.Concat("\"", etag, "\""));
        }
예제 #4
0
 public override void SetMaxAge(TimeSpan delta)
 {
     w.SetMaxAge(delta);
 }