整頁緩存:(適用於數據量大,不需頻繁更新的頁面)
在page指令下面添加:
Duration:指緩存的時間,以秒爲單位;
VaryByParam:通過參數緩存;
VaryByControl:通過控件緩存;一般的控件主List控件;
location:保存的位置;
VaryByCustom:通過瀏覽器緩存;
<%@ OutputCache Duration ="20" VaryByParam ="none" VaryByControl ="none" Location ="Any" VaryByCustom ="browser"%>(第三個參數和第四個參數至少有其中一個,前二個參數是必需的)
利用參數緩存:(可以根據不同的參數緩存不同的頁面)
如果請求的頁面像這樣的(http://localhost:1062/Test/Details.aspx?id=16)帶參的url,那麼可以使用帶參緩存頁面
在page指令下添加緩存指令:
<%@ OutputCache Duration ="20" VaryByParam ="id" %>(多個參數時,用分號隔開,只有當所有參數都匹配時,纔會緩存)
使用控件緩存頁面:
當頁面有集合控件可以儲存多個值時,可以使用控件緩存
<%@ OutputCache Duration="120" VaryByParam="none" VaryByControl="ddlStarGender" %>
頁面部分緩存(替代緩存)
---緩存頁面一部分:(寫一方法,把不需緩存的地方,用一方法替換掉)
在整頁緩存的基礎上:在頁面添加一控件Substitution(替代頁面中不需要緩存的部分)
<asp:Substitution ID="Substitution1" runat="server" MethodName ="GetDateTime"/>
其中MethodName中調用頁面中不需替換的部分的方法:
在後臺代碼中添加這樣的方法:
例:
public static string GetDateTime(HttpContext context)
{
return DateTime.Now.ToString();
}
這樣的方法要注意三點:①這個方法必需是靜態的
②必需是String類型的返回值
③參數必需是HttpContext類型的
應用程序緩存:
----SQL緩存依賴----
首先需要開通SQL的一個服務:
alter database 數據庫名字 set enable_broker
然後在Page指令下面添加緩存指令:
<%@ OutputCache Duration= "120" SqlDependency="CommandNotification" VaryByParam="none" %>
在後臺代碼中添加代碼:
protected void Page_Load(object sender, EventArgs e)
{
// 顯示頁面創建的時間
lblTime.Text = System.DateTime.Now.ToString();
string connString = "Data Source=A5FDE8B0B6E1433;Initial Catalog=MyBookShop;User ID=sa;Pwd=780320380";
// 啓動接收依賴項更改通知的監聽器
SqlDependency.Start(connString);
SqlConnection connection = new SqlConnection(connString);
DataSet dataSet = new DataSet();
string sql = "SELECT title 書名,author 作者,publishdate 出版日期,unitprice 單價,clicks 點擊次數 FROM dbo.books";
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
adapter.Fill(dataSet);
gvBooksInfo.DataSource = dataSet;
gvBooksInfo.DataBind();
}
!!!!這樣應用程序會隨時監控數據庫來更新頁面;