ASP.NET 缓存(4)

简介:

ASP.NET可以让你把一组页面采用相同的缓存设置,你只需要在web.config文件定义缓存设置,将这些设置关联一个name,然后把这个name应用到页面上去即可。 
看如下的web.config

<configuration> 
<system.web> 
<caching> 
<outputCacheSettings> 
<outputCacheProfiles> 
<add name="ProductItemCacheProfile" duration="60" /> 
</outputCacheProfiles> 
</outputCacheSettings> 
</caching> 
... 
</system.web> 
</configuration> 
You can now use this profile in a page through the CacheProfile attribute:

在页面中,你可以通过CacheProfile 属性来设置Cache。如下 
<%@ OutputCache CacheProfile="ProductItemCacheProfile" VaryByParam="None" %>

如果你想设置其他的缓存细节,比如VaryByParam行为,你可以在OutputCache指令设置属性,或者在配置文件中加一个<add>标签。

你也可以通过web.config文件配置更多的ASP.NET缓存细节。很多选项能够让调试更方便,但是在产品应用中没多大的感觉。

配置这些设置,使用<caching>元素中的<cache>元素来描述。<cache> 提供了一些选项来调节。如下: 
<configuration> 
<system.web> 
<caching> 
<cache disableMemoryCollection="true|false" 
disableExpiration="true|false" 
percentagePhysicalMemoryUsedLimit="90" 
privateBytesLimit="0" 
privateBytesPollTime="00:02:00" 
/> 
... 
</caching> 
</system.web> 
... 
</configuration>

使用disableMemoryCollection 和disableExpiration 可以让ASP.NET在内存不足的时候停止收集缓存,并且移除过期的缓存项。请小心的使用这些这些设置,因为可能会导致你的应用程序内存耗尽。

使用percentagePhysicalMemoryUsedLimit来设置ASP.net可以使用作为缓存的最大内存量,是一个百分比。当缓存到达你设置的值,ASP.NET开始积极的清除过时的和最少使用的缓存项。该值设为0意味着不需要内存来缓存,ASP.NET将会尽快的删除他所增加的缓存。默认值是90,使用可用内存的90%来作为缓存。

privateBytesLimit 设置了在ASP.NET开始清除到期的数据项并试图回收内存之前,可以占用的最大的内存字节数。默认值是0.这表示ASP.NET会使用自己的算法来决定什么时候开始回收内存。

privateBytesPollTime 设置了ASP.NET检查内存使用情况的间隔时间。默认的轮询时间是2分钟。

ASP.NET缓存模型使用简单而且非常快速,因为缓存服务运行在ASP.NET进程中,数据则存储在物理内存。

但是ASP.NET缓存系统对于大数据量,长时间的缓存则效率不是很高。比如,一个大企业的持续增长的产品目录。假设产品目录改变不是很频繁,你可能想要缓存缓存数以千计的产品页面,如此多的数据,使用服务器内存将会产生风险。此时,最好是能使用其他的存储,比内存慢但是比重新创建页面快,最有可能的方案包括基于磁盘的存储,基于数据库的存储,或者分布式存储系统例如Windows Server AppFabric。

任何形式的外部缓存存储都会比常规的内存缓存慢,有些存储选项甚至有潜在瓶颈并且缺少可扩展性。在你使用非基于内存的缓存时候,你需要仔细的评估这个缓存系统的性能,速度和扩展性。

在以前,外部缓存系统是能实现的,但是他们的实现是完全的和ASP.NET分离的,所以,每个第三方的缓存方案都有自己的API。但是ASP.NET4将提供者模型加入到缓存中,允许你用不同的数据存储插入到缓存。但是要注意的,ASP.NET不提供任何预先创建的缓存提供者。但是,ASP.NET团队的一些成员演示了一个原型,使用基于文件的缓存和Windows Server AppFabric。ASP.NET架构师也保证发布这些代码样例来展示如何和memcached整合。




















本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/589091 ,如需转载请自行联系原作者

相关文章
|
9月前
|
缓存 开发框架 .NET
ASP.NET Core 缓存
Get新知识: 缓存相关概念:缓存的类型:总结:总的来说,私有缓存会减少网络带宽的需求,同时会减少从缓存到API的请求。因为私有缓存是存储在客户端浏览器的,对于请求来说,如果缓存还在有限期内,那么请求连网络请求都不会发出会直接在客户端浏览器获取到响应,这样就减少网络请求次数,同样也会减少API请求次数。而共享缓存不会节省缓存到API的网路带宽,但是它会减少请求到API的请求。因为共享缓存是...
36 0
ASP.NET Core 缓存
|
12月前
|
存储 SQL 缓存
ASP.NET Core MVC 从入门到精通之缓存
ASP.NET Core MVC 从入门到精通之缓存
98 0
|
存储 缓存 开发框架
Asp.Net Core 2.1+的视图缓存(响应缓存)
Asp.Net Core 2.1+的视图缓存(响应缓存)
75 0
|
存储 消息中间件 缓存
Redis入门与ASP.NET Core缓存
Redis入门与ASP.NET Core缓存
358 0
Redis入门与ASP.NET Core缓存
|
缓存 开发框架 NoSQL
ASP.NET Core 使用Redis实现分布式缓存:Docker、 IDistributedCache、StackExchan geRedis
ASP.NET Core 使用Redis实现分布式缓存:Docker、 IDistributedCache、StackExchan geRedis
297 0
ASP.NET Core 使用Redis实现分布式缓存:Docker、 IDistributedCache、StackExchan geRedis
|
存储 缓存 算法
ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
原文:ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存        ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年   正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完美的句号,回顾2016年,感受颇多,感恩那些帮助我的人。
1212 0
|
缓存 .NET 中间件
【WPF】【UWP】借鉴 asp.net core 管道处理模型打造图片缓存控件 ImageEx
原文:【WPF】【UWP】借鉴 asp.net core 管道处理模型打造图片缓存控件 ImageEx 在 Web 开发中,img 标签用来呈现图片,而且一般来说,浏览器是会对这些图片进行缓存的。 比如访问百度,我们可以发现,图片、脚本这种都是从缓存(内存缓存/磁盘缓存)中加载的,而不是再去访问一次百度的服务器,这样一方面改善了响应速度,另一方面也减轻了服务端的压力。
1387 0
|
Web App开发 缓存 JavaScript
ASP.NET性能优化之局部缓存
在网站的开发过程中,经常碰到的一类需求场景是: 1:页面含热点新闻,热点新闻部分需要10分钟更新一次,而整个页面的其它部分1天内都不会变动; 2:首页的某个BANNER需要显式:欢迎***; 上面场景中的1,如果整个页面的缓存失效都定为10分钟,则势必增加性能开销,所以最好的策略是页面的不同部分采用不同的缓存失效时长。
1342 0