当前位置: 首页>>代码示例>>C#>>正文


C# HttpResponse.GetCachedResponse方法代码示例

本文整理汇总了C#中System.Web.HttpResponse.GetCachedResponse方法的典型用法代码示例。如果您正苦于以下问题:C# HttpResponse.GetCachedResponse方法的具体用法?C# HttpResponse.GetCachedResponse怎么用?C# HttpResponse.GetCachedResponse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Web.HttpResponse的用法示例。


在下文中一共展示了HttpResponse.GetCachedResponse方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: DoCacheInsert

		void DoCacheInsert (HttpContext context, HttpApplication app, HttpResponse response)
		{
			string vary_key = context.Request.FilePath;
			string key;
			OutputCacheProvider provider = FindCacheProvider (app);
			CachedVaryBy varyby = provider.Get (vary_key) as CachedVaryBy;
			CachedRawResponse prev = null;
			bool lookup = true;
			string cacheKey = null, cacheValue = null;
			HttpCachePolicy cachePolicy = response.Cache;
			
			if (varyby == null) {
				varyby = new CachedVaryBy (cachePolicy, vary_key);
				provider.Add (vary_key, varyby, Cache.NoAbsoluteExpiration);
				lookup = false;
				cacheKey = vary_key;
			} 

			key = varyby.CreateKey (vary_key, context);

			if (lookup)
				prev = provider.Get (key) as CachedRawResponse;
			
			if (prev == null) {
				CachedRawResponse c = response.GetCachedResponse ();
				if (c != null) {
					string [] keys = new string [] { vary_key };
					DateTime utcExpiry, absoluteExpiration;
					TimeSpan slidingExpiration;

					c.VaryBy = varyby;
					varyby.ItemList.Add (key);

					if (cachePolicy.Sliding) {
						slidingExpiration = TimeSpan.FromSeconds (cachePolicy.Duration);
						absoluteExpiration = Cache.NoAbsoluteExpiration;
						utcExpiry = DateTime.UtcNow + slidingExpiration;
					} else {
						slidingExpiration = Cache.NoSlidingExpiration;
						absoluteExpiration = cachePolicy.Expires;
						utcExpiry = absoluteExpiration.ToUniversalTime ();
					}

					provider.Set (key, c, utcExpiry);
					HttpRuntime.InternalCache.Insert (key, c, new CacheDependency (null, keys), absoluteExpiration, slidingExpiration,
									  CacheItemPriority.Normal, response_removed);
					cacheValue = key;
				}
			}
			
			if (cacheKey != null) {
				lock (keysCacheLock) {
					if (keysCache == null) {
						BuildManager.RemoveEntry += new BuildManagerRemoveEntryEventHandler (OnBuildManagerRemoveEntry);
						keysCache = new Dictionary <string, string> (StringComparer.Ordinal);
						keysCache.Add (cacheKey, cacheValue);
					} else if (!keysCache.ContainsKey (cacheKey))
						keysCache.Add (cacheKey, cacheValue);
				}
			}
		}
开发者ID:nlhepler,项目名称:mono,代码行数:61,代码来源:OutputCacheModule.cs


注:本文中的System.Web.HttpResponse.GetCachedResponse方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。