asp_缓存

来源:互联网 发布:时代网络 编辑:程序博客网 时间:2024/05/24 03:20

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="删除此缓存" onclick="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>