一、缓存概念,缓存的好处、类型。
-------------------------------------------------------------------------------- 缓存是一种用空间换取时间的技术,通俗点也就是说把你得到的数据存放在内存中一段时间,在这短时间内服务器不去读取数据库、或是真实的数据源,而是读取你存放在内存中的数据,这里你会疑惑怎么设置存放数据,能存放什么样子的数据,存放时间的设置,真实数据源数据改变服务器不就读取存在偏差?别急,下面慢慢会说到的。。
缓存的好处,缓存是网站性能优化不可缺少的一种数据处理机制,他能有效的缓解数据库压力,例如,网站每分钟的点击率为100万,如果不使用缓存的静态页面,这里也没有viewstate的情况下(viewstate会产生大量的字符串,对服务器交互数据是一种压力,所以一般页面是要禁用viewstate,采用缓存的),只能是用户点击一次该页面,这个页面就读取一次数据库,这样给数据库造成的压力可想而知,如果这里我们使用了缓存的话,设置缓存有效期为1分钟,则这一分钟只内,点击100万次跟点击一次是一样的,都是读取一次数据库,数据源是被缓存在内存中了。
asp.net中的缓存主要分为:页面缓存,数据源缓存,自定义数据缓存这三种主要类型。
--------------------------------------------------------------------------------
二、数据缓存
--------------------------------------------------------------------------------
if (Cache["date"] == null) //判断是否存在value值为date的缓存是否存在
{
Cache["date"] = datastr;
Response.Write("第二个输出时间为:"+Cache["date"] + "这里读取的当前的时间"); //这里读取的当前的时间,刷新页面时,这里的时间会随着变化。
}
else
{
Response.Write(Cache["date"] + "这里是从缓存中读取的时间");//这里读取的缓存中的时间,刷新页面时,这里的随着时间变化,不会变化。
}
}
}
下面我们给数据缓存添加一些实用的参数(上代码)。
--------------------------------------------------------------------------------
三、页面缓存
--------------------------------------------------------------------------------
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head runat="server">
title>/title>
/head>
body>
div>
/div>
/body>
/html>
ASP.NET不会再执行页面的生命周期和相关代码而是直接使用缓存的页面,简单点理解也就是我注释中介绍的。
--------------------------------------------------------------------------------
四、控件缓存
--------------------------------------------------------------------------------
1.ObjectDataSource这样的数据源控件,可以在属性栏中找到相应的属性,进行设置,下面我列出个例子,设置启动缓存,缓存时间为10秒,时间类型为绝对时间。
asp:ObjectDataSource ID="ObjectDataSource1" runat="server" EnableCaching="True" CacheDuration="10" CacheExpirationPolicy="Absolute">/asp:ObjectDataSource>
2.没有缓存属性的控件要加缓存
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head runat="server">
title>/title>
/head>
body>
form id="form1" runat="server">
div>
asp:TextBox ID="TextBox1" runat="server">/asp:TextBox>
/div>
/form>
/body>
/html>
五、缓存依赖
--------------------------------------------------------------------------------
}
六、配置文件中设置缓存
--------------------------------------------------------------------------------
html xmlns="http://www.w3.org/1999/xhtml">
head runat="server">
title>/title>
/head>
body>
div>
/div>
/body>
/html>
七、缓存的回调函数
--------------------------------------------------------------------------------
}
public void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason) //这个为缓存移除时的回调函数,一定要保持与 Cache.Insert()方法中的最后一个参数名字一致,
//这里使用了委托,你可以在 Cache.Insert()这个函数中转定义看到的,所以这里的格式就只能按我写的这种方法签名写。
{
System.IO.File.WriteAllText(Server.MapPath("log.txt"),"缓存移除原因为:"+reason.ToString());
}
八、配置文件中的缓存设置
--------------------------------------------------------------------------------
我们服务器有开启缓存功能, 缓存功能可以减少您访问网站时候网站在服务器里面的编译时间, 大大加快您网站的访问速度, 如果您需要对您网站进行频繁更新的话, 您可以考虑暂时将缓存时间减少,或者暂时关闭缓存
请将下列代码放进web.config文件里面放在您网站的根目录;
1.在web.config里面设置缩小缓存的时间,请在web.config里面用下面的定义
system.webServer>
caching>
profiles>
remove extension=".aspx" />
add extension=".aspx" policy="CacheForTimePeriod"
kernelCachePolicy="DontCache" duration="00:00:01" varyByQueryString="*" />
/profiles>
/caching>
/system.webServer>
2. 如果要关闭某个页面的caching功能,请在web.config里面用下面的定义
configuration>
location path="showStockPrice.asp">
system.webServer>
caching>
profiles>
remove extension=".asp" />
add extension=".asp" policy="DontCache" kernelCachePolicy="DontCache"/>
/profiles>
/caching>
/system.webServer>
/location>
/configuration>
3. 如果要关闭整个程序的caching功能,请在web.config里面用下面的定义
configuration>
system.webServer>
caching>
profiles>
remove extension=".asp" />
add extension=".asp" policy="DontCache" kernelCachePolicy="DontCache"/>
/profiles>
/caching>
/system.webServer>
/configuration>
4. 如果要关闭根目录某个或某几个文件夹的caching功能,请在web.config里面用下面的定义
location path="~/folderA,~/folderB">
system.webServer>
caching>
profiles>
remove extension=".asp" />
add extension=".asp" policy="DontCache" kernelCachePolicy="DontCache"/>
/profiles>
/caching>
/system.webServer>
/location>
/configuration>
上一篇:.net中 关于反射的详细介绍
下一篇:IsPostBack原理的介绍