頁面緩存策略

   頁面緩存策略的實施可以很好的解決那些請求多,而變化少的頁面或是數據的性能問題,一旦我們爲這些內容實施了緩存策略,那末在特定時間以內(開發者設置),如果有新的請求,系統會直接從內存中調出緩存的內容,反饋給client,而不必每次都從數據庫重新獲得數據,再進行html轉換後反饋。
   1.數據緩存:這裏指的是利用cache進行數據緩存。關於cache的用法之前已經談過,通常的做法是:對某些信息insert到cache中,並設置過期時間;每次調用cache的時候,檢查是否爲null ,如果是null,重新insert,負責直接使用cache中數據即可.當然也經常會採用文件依賴來動態更新cache數據。
   2.頁面緩存:
   1)整個頁面緩存。只需要在頁面頭部加入:

<%@ OutputCache Duration ="5"  VaryByParam ="none"  %>

其中的參數的含義,可以查詢MSdn詳細瞭解.這種情況實用於整個頁面在一段時間內不會發生變化,比如“本週焦點”,“使用說明”等。但是實際上,我們還要對其中某些部分取消緩存動態顯示。
      2)使用Substitution控件實現在整頁緩存的頁面中部分動態變化。
<asp:Substitution ID="Substitution1" runat="server"  MethodName ="MethodName"/>
這個控件在頁面中只是個佔位符,動態加載的信息會取代它的位置。其中的MethodName既是動態執行的後臺方法名稱.比如如果想在這裏動態顯示當前時間:
 public static string getTime(HttpContext context)
    
{
        
return DateTime.Now.ToString();
    }

注意:這個方法必須是:靜態的public,並且只能返回string ,參數爲HttpContext.
     當然還能做更多的事情,比如你可以在此檢查用戶權限,並顯示用戶信息等。
     3)如果只想使部分頁面緩存,採用用戶控件就是一個 好辦法,因爲在這裏就可以設置期緩存參數:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="uc1.ascx.cs" Inherits="uc1" %>
<%@ OutputCache VaryByParam ="none" Duration ="10"  %>
UC-DateTime:
<asp:Label ID="Label1" runat="server"  Text=''></asp:Label>

public partial class uc1 : System.Web.UI.UserControl
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        Label1.Text 
= DateTime.Now.ToString();
    }

}

這樣,如果把這個控件拖到頁面中,那隻會緩存uc部分,而不會對其他部分影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章