效果當在規定時間內訪問一個網頁時,網頁上的內容咱是保持不變,時間一過,網頁上的內容就會重新訪問服務器,獲取數據。
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="緩存.WebForm1" %>
<!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:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
後台:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Cache["news"] == null)
{
DataTable dt = LoadData();
//將緩存和外部文件關聯,外部文件以改變,緩存立即失效
//Cache.Insert("news", dt, new CacheDependency(@"d:\cache.txt"));
//為緩存設定一個絕對時間,讓緩存在這個時間到的時候失效
//Cache.Insert("news", dt, null, DateTime.Now.AddSeconds(20), TimeSpan.Zero);
//為緩存設置一個相對時間,讓緩存在這個時間到的時候失效
Cache.Insert("news", dt, null, DateTime.MaxValue, TimeSpan.FromSeconds(30));
//簡單的設置一個緩存
Cache.Insert("news", dt);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
else
{
DataTable dt = Cache["news"] as DataTable;
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
}
private DataTable LoadData()
{
string strcon = ConfigurationManager.ConnectionStrings["Sqlserver"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "pro_FenYe";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@pagesize",500);
cmd.Parameters.AddWithValue("@pageindex",1);
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
cmd.Dispose();
conn.Dispose();
return dt;
}
}
web.config中的設置時間的代碼:
<system.web>
<compilation debug="true" targetFramework="4.0" />
<caching>
<sqlCacheDependency pollTime="500">
<databases>
<add name="sqldependency" connectionStringName="Sqlserver"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>