主要内容
1. 掌握缓存的基本实现
2. 用缓存技术改善应用程序性能
缓存技术=既重要又简单的技术
1. 缓存大提高了数据访问效率
2. 但也存在一个缓存数据过期的问题
针对缓存过期问题ASP.NET提供了三种解决方案
1. 整页缓存
最简单,最常用的缓存形式,它缓存整个页面
适用页面:不需要频繁更新数据,占用大量时间和资源编译
指令:
<%@OutputCache
Duration="5" //最常用属性,单位是秒
VaryByParam="id;name" //最常用属性
对这个参数的理解:当这个属性值被设置时,缓存就会以属性值中的参数变量进行缓存,如:当ID为1时服务器将在内存中生成一个缓存页面,如果ID变成2,那么服务器将会增加一个因为ID不同的另一个缓存页面。
那么如果有100个ID,那么就会缓存100个页面。当然,如果你的Duration设置的时间够长的话才会这样,如果设置是一秒就不会了。呵呵。
VaryByControl="none"
Location="any"
VaryByCustom="browser"
%>
2. 页面部分缓存
1. 缓存页面的一部分(智商没问题的都知道!)
2. 适用页面:页面内部某些部分每次请求时都需要保持最新数据
3. 用来实现页面部分缓存的常用方法:缓存后替换
4. 缓存后替换:缓存整个页面,替换页面中不需要缓存的部分,常用Substitution控件实现。
重点:Substitution控件的使用
它最有价值的属性就是:MethodName
MethodName属性需要满足3个条件:
1. 必须是个静态的方法
2. 返回值必须是string类型
3. 参数必须是HttpContext类型
如:
public static string GetNum(HttpContext context)
{
return "";
}
理解:如一个页面,大部分的内容很长时间都不会去修改,但有特别的几处,需要时时更新,如页面的点击率等。那这个要时时更新的部分就要使用Substitution控件来代替它,然后为Substitution的MethodName属性指定个静态的返回值是字符,且参数是HttpContext类型的方法,这个方法就是能简单的返回需要时时更新的部分内容就可以了。
Substitution控件就是一个能替换缓存页面中部分内容的功能。注意是缓存页面哦,即在内存中实现的这个步骤。
3. 应用程序缓存
1. 存储与应用程序相关的对象
2. 使用比较灵活,可以用来实现有条件控制的缓存
这个应用程序缓存跟前面课程里讲的Application对象一样,使用方式也是一样的。但是,Application是一个应用程序级对象,而应用程序缓存是存储在服务器内存当中的,这个跟Application不一样。
应用程序缓存使用是Cache对象。如:
Cache["value"]="我是来自Cache对象中的数据!";
测试效果同Application对象是一样的,它的生命周期跟Application不一样的是,Application是,服务器的下次重启之前!而应用程序缓存Cache的生命周期是,当服务器内存不够用的时候,服务器就会将它释放掉!同时,如果给Cache对象设置了过期时间,它也会被自动释放。
4. 作业:自学MemberCache方式的缓存实现
1. 掌握缓存的基本实现
2. 用缓存技术改善应用程序性能
缓存技术=既重要又简单的技术
1. 缓存大提高了数据访问效率
2. 但也存在一个缓存数据过期的问题
针对缓存过期问题ASP.NET提供了三种解决方案
1. 整页缓存
最简单,最常用的缓存形式,它缓存整个页面
适用页面:不需要频繁更新数据,占用大量时间和资源编译
指令:
<%@OutputCache
Duration="5" //最常用属性,单位是秒
VaryByParam="id;name" //最常用属性
对这个参数的理解:当这个属性值被设置时,缓存就会以属性值中的参数变量进行缓存,如:当ID为1时服务器将在内存中生成一个缓存页面,如果ID变成2,那么服务器将会增加一个因为ID不同的另一个缓存页面。
那么如果有100个ID,那么就会缓存100个页面。当然,如果你的Duration设置的时间够长的话才会这样,如果设置是一秒就不会了。呵呵。
VaryByControl="none"
Location="any"
VaryByCustom="browser"
%>
2. 页面部分缓存
1. 缓存页面的一部分(智商没问题的都知道!)
2. 适用页面:页面内部某些部分每次请求时都需要保持最新数据
3. 用来实现页面部分缓存的常用方法:缓存后替换
4. 缓存后替换:缓存整个页面,替换页面中不需要缓存的部分,常用Substitution控件实现。
重点:Substitution控件的使用
它最有价值的属性就是:MethodName
MethodName属性需要满足3个条件:
1. 必须是个静态的方法
2. 返回值必须是string类型
3. 参数必须是HttpContext类型
如:
public static string GetNum(HttpContext context)
{
return "";
}
理解:如一个页面,大部分的内容很长时间都不会去修改,但有特别的几处,需要时时更新,如页面的点击率等。那这个要时时更新的部分就要使用Substitution控件来代替它,然后为Substitution的MethodName属性指定个静态的返回值是字符,且参数是HttpContext类型的方法,这个方法就是能简单的返回需要时时更新的部分内容就可以了。
Substitution控件就是一个能替换缓存页面中部分内容的功能。注意是缓存页面哦,即在内存中实现的这个步骤。
3. 应用程序缓存
1. 存储与应用程序相关的对象
2. 使用比较灵活,可以用来实现有条件控制的缓存
这个应用程序缓存跟前面课程里讲的Application对象一样,使用方式也是一样的。但是,Application是一个应用程序级对象,而应用程序缓存是存储在服务器内存当中的,这个跟Application不一样。
应用程序缓存使用是Cache对象。如:
Cache["value"]="我是来自Cache对象中的数据!";
测试效果同Application对象是一样的,它的生命周期跟Application不一样的是,Application是,服务器的下次重启之前!而应用程序缓存Cache的生命周期是,当服务器内存不够用的时候,服务器就会将它释放掉!同时,如果给Cache对象设置了过期时间,它也会被自动释放。
4. 作业:自学MemberCache方式的缓存实现