您的位置:首页 > 编程语言 > ASP

黑马程序员_学习日记75_731ASP.NET(模板、缓存)

2012-08-09 21:59 459 查看
一、模板

子页面Load先执行,模板页Load后执行,模板页相当于子页面的控件。

public partial class DemoOnMaster : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Response.Write("我是子页面<br/>");
//通过子页面拿到模板页的控件
var btn = this.Master.FindControl("Button1") as Button;
if (btn != null)
{
btn.Text = "这是子页面设置的值";
}
}

public void Page_PreInit(object sender, EventArgs e)
{
//MasterPageFile属性只能在Page_PreInit事件中或之前设置
//this.MasterPageFile = "~/Site.Master";
}
}


二、缓存

(一)页面缓存

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PageCache.aspx.cs" Inherits="Exam.Web._731.PageCache" %>
<!--页面缓存的设置:Duration表示过期时间40秒,VaryByParam="none"表示任何参数的变化不会触发缓存失效,VaryByParam="*"表示任何参数的变化都会触发缓存失效-->
<%@ OutputCache Duration="40" VaryByParam="*" %>


(二)数据源缓存

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" EnableCaching="true" CacheDuration="20"


(三)自定义缓存

滑动窗口时间和绝对过期时间不能同时设置,如果设置了滑动过期时间,则绝对过期时间必须设置为DateTime
.Maxvalue;如果设置了绝对过期时间,那么必须设置滑动窗口时间为TimeSpan.Zero。

public List<Model.StudentInfo> studentInfos = new List<Model.StudentInfo>();
protected void Page_Load(object sender, EventArgs e)
{
if (Cache["stu"] == null)
{
studentInfos = new BLL.StudentInfo().GetModelList(string.Empty);
//设置自定义缓存的绝对过期时间为10秒,必须跟滑动窗口时间分开
//Cache.Insert("stu", studentInfos, null, DateTime.Now.AddSeconds(10), TimeSpan.Zero);
//设置自定义缓存的滑动窗口时间为10秒,10秒内如果访问缓存,缓存将暂停更新10秒
Cache.Insert("stu", studentInfos, null, DateTime.MaxValue, new TimeSpan(0,0,10));
}
else
{
studentInfos = Cache["stu"] as List<Model.StudentInfo>;
}
for (int i = 0; i < studentInfos.Count; i++)
{
Response.Write(studentInfos[i].NickName + "<br/>");
}
}


(四)缓存依赖

1、文件依赖

//文件依赖:当文件变化或文件的路径变化时导致缓存失效
//使用场景:如果数据时从文件中来,用此依赖项比较合适
Cache.Insert("stu", studentInfos, new System.Web.Caching.CacheDependency(Request.MapPath("a.txt")));


2、数据库依赖

(五)缓存使用场景:

访问量大,变化较少。典型场景:京东菜单项变化较少,访问量又特大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐