缓存分三种:
1、页面输出缓存
2、数据缓存
3、缓存依赖
高速缓存概述:
通常,应用程序可以将那些频繁访问的数据,以及那些需要大量处理时来创建的数据存储在内存中,从而提高性能。
高速缓存的处理方式
页面输出缓存
整个页面输出缓存
部分页面输出缓存
数据高速缓存
一、页面输出缓存
页输出缓存对于那些不经常更改,但需要大量处理才能创建的页特别有用。
整个页面缓存:将页的全部内容保存在内存中,并用于完成客户端请求。
部分页面缓存:允许缓存页的部分内容,其他部分则为动态内容。
部分页缓存可采用两种工作方式:控件缓存和缓存后替换。
1、页面输出缓存——整个页面缓存
要应用输出高速缓存,在页面中插入一个OutputCache页面指令。
属性 | 说明 |
Duration | 页或用户控件进行缓存的时间(以秒计)。 |
Location | 输出缓存的位置。 |
VaryByParam | 指定哪些QueryString参数会高速缓存页面的新版本 |
PageCache_Test1.aspx
PageCache_Test2.aspx PageCache_Test3.aspx
2、1页面输出缓存——部分页面缓存(用户控件缓存)
方式一
创建用户控件
在aspx页面中插入一个OutputCache页面指令
在OutputCache中使用VaryByControl属性指向用户控件
方式二
创建用户控件
在用户控件中插入一个OutputCache页面指令
设置OutputCache属性,其中Share属性确定用户控件输出是否可以由多个页共享。
PageCache_Test4.aspx UC_Country.ascx
PageCache_Test5.aspx PageCache_Test6.aspx UC_Country1.ascx (share属性的作用)
2、2页面输出缓存——部分页面缓存(缓存后替换 )
缓存后替换与控件缓存正好相反。它对页进行缓存,但是页中的某些片段是动态的,因此不会缓存这些片段。
Substitution控件:指定输出缓存网页上免于缓存的部分 。
Substitution 控件执行时,会调用一个返回字符串的方法。该方法返回的字符串即为要在页中的 Substitution 控件的位置上显示的内容。
使用 MethodName 属性指定方法的名称。方法要求是静态方法,且方法的参数是HttpContext类型的
PageCatch_Test7.aspx
3、数据缓存
Cache:用于 Web 应用程序的缓存。
属性 | 说明 |
Count | 获取存储在缓存中的项数。 |
方法 | 说明 |
Add | 将指定项添加到 Cache 对象。 |
Get | 从 Cache 对象检索指定项。 |
Insert | 向 Cache 对象插入项。 |
Remove | 从Cache 对象移除指定项。 |
DataCache_Test1.aspx
DataCache_Test2.aspx
数据缓存——Cache.Add方法
public Object Add(string key, Object value, CacheDependency dependencies, DateTime absoluteExpiration,
TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback
)
参数 | 说明 |
key | 键 |
value | 值 |
dependencies | 缓存依赖项 |
absoluteExpiration | 绝对过期时间;如果使用可调过期,则 absoluteExpiration 参数必须为 NoAbsoluteExpiration。 |
slidingExpiration | 可调过期时间;如果使用绝对过期,则 slidingExpiration 参数必须为 NoSlidingExpiration |
priority | 缓存的优先级 |
onRemoveCallback | 在从缓存中移除对象时所调用的委托,也可为null值。 |
过期类型 | 说明 |
可调过期 | 指定某项自上次被访问后多长时间过期。例如,可以将某项设置为自上次在缓存中被访问后 20 分钟过期。 |
绝对过期 | 指定某项在设定的时间过期,而不考虑访问频率。 |
DataCache_Test3.aspx
4、数据缓存——缓存依赖
可以将缓存中某一项的生存期配置为依赖于其他应用程序元素,如某个文件或数据库。
依赖项 | 说明 |
键依赖项 | 应用程序缓存中的项存储在键/值对中。键依赖项允许项依赖于应用程序缓存中另一项的键。如果移除了原始项,则具有键依赖关系的项也会被移除。 |
文件依赖项 | 缓存中的项依赖于外部文件。如果该文件被修改或删除,则缓存项也会被移除。 |
SQL 依赖项 | 缓存中的项依赖于 SQL Server数据库中表的更改。 |
聚合依赖项 | 通过使用 AggregateCacheDependency 类缓存中的项依赖于多个元素。如果任何依赖项发生更改,该项都会从缓存中移除。 |
自定义依赖项 | 可以用您自己的代码创建的依赖关系来配置缓存中的项。例如,可以创建一个自定义Web 服务缓存依赖项,当调用 Web 服务得到一个特定值时,该依赖项就会从缓存中移除数据。 |
DataCache_Test4.aspx (文件依赖)
缓存依赖——Sql依赖
® 注册:打开Visual Studio命令窗口 > 执行Aspnet_regsql.exe > 执行向导完成注册
® 配置:在web.config中进行配置。
® 使用SqlCacheDependency创建缓存依赖。
<system.web>
<caching>
<sqlCacheDependency enabled = "true" >
<databases>
<add name="dbAspNetApp" connectionStringName="dbAspNetAppConnectionString1" />
</databases>
</sqlCacheDependency>
</caching>
</system.web>
DataCache_Test5.aspx