1.页面缓存的实现:
<%@ OutputCache Duration="15" VaryByParam="id;name"%>
<%--1.*:代表只要请求报文发生任何改变,那么缓存就失效一次--%>
<%--3.设置一个请求当中的参数的key,多个key之间用;隔开--%>
<%--2.none:代表不管参数如何变化,这缓存都会持续15秒--%>
2.数据源缓存:
页面中拖入ObjectDataSource控件,然后在属性窗口中设置:
CacheDuration:30(自定义)
EnableCacheing:True(必须)
该实例可以通过数据库跟踪机制进行验证,方法:打开数据库跟踪机制,清楚里面全部信息,然后加载页面,在设置好的时间内,本实例为30秒,如果进行刷新,数据库跟踪中没有任何的消息,则代表数据源缓存正确执行。
3.数据库缓存配置:
C:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.bat (VS2012开发人员命令提示) ,可以直接在其内输入:aspnet_regsql -S . -E -ed -d bjhksj -et -t HKSJ_USERS
如果不存在,则在命令窗口中执行:cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319(回车)
aspnet_regsql -S . -E -ed -d bjhksj -et -t HKSJ_USERS
如下:
完成后数据库中:
然后在web.Config中:
红色字体在config中进行相应的修改<system.web>
<caching>
<sqlCacheDependency enabled="true">
<databases>
<add name="HeimaRegulation" connectionStringName="connectionString" pollTime="500"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
则配置完成!!!
4.自定义缓存:
SelfCacheDemo.aspx:
<div>
<asp:Button ID="Button1" runat="server" Text="显示缓存" />
<asp:Button ID="Button2" runat="server" Text="删除此缓存" οnclick="Button2_Click" />
</div>
SelfCacheDemo.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
//添加一个缓存数据
if (!IsPostBack)
{
//HttpContext.Current.Cache已经进行了封装,则可以直接用下面的方法进行
//Cache
//添加一条缓存数据
//Cache.Insert("c1", DateTime.Now);此方法重新生成后,才能够改变
//添加绝对过期时间的缓存
//Cache.Insert("c1", DateTime.Now, null,DateTime.Now.AddSeconds(10), TimeSpan.Zero);//添加绝对过期时间new DateTime().AddSeconds(15),则其后必须跟有TimeSpan.Zero
//添加滑动窗口的过期时间缓存,特定时间内,10秒内访问则继续延迟10秒钟,如果单位 时间内没有访问,则不会延迟
//Cache.Insert("c1",DateTime.Now,null,DateTime.MaxValue,TimeSpan.FromSeconds(10));
//添加一个依赖项的缓存,Cache是对多有人和所有的请求的
//天机一个缓存,才缓存以来XML文件(可以为其他文件),当xml文件发生变化时,缓存失效
//使用场景:数据正好是从数据里来的,那么可以把数据做成以来文件缓存
Cache.Insert("c1", DateTime.Now,new System.Web.Caching.CacheDependency(Request.MapPath("a.xml")), DateTime.MaxValue, TimeSpan.FromSeconds(10));
//依赖数据库缓存
//适用场景:缓存的数据跟依赖的表相关,可以用这个方式。
Cache.Insert("c1", DateTime.Now, new SqlCacheDependency("bjhksj","HKSJ_USERS"));
Response.Write("写入缓存成功");
}
else
{
Response.Write(Cache["c1"]);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
Cache.Remove("c1");
Response.Write("删除成功");
}
LeftBar.aspx.cs:
public partial class LeftBarMenuDemo : System.Web.UI.Page
{
public List<Model.HKSJ_Main> AllMenus { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
AllMenus = Cache["menu"] as List<Model.HKSJ_Main>;
if (AllMenus == null)
{
//从数据库中读取,并写入缓存
BLL.HKSJ_Main mainServer = new BLL.HKSJ_Main();
AllMenus = mainServer.GetModelList(string.Empty);
Cache.Insert("menu", AllMenus, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);
}
}
}
LeftBar.aspx
<div id="leftBar">
<%foreach(var item in this.AllMenus)
{%>
<p>
<%=item.ID %>
</p>
<%} %>
</div>