程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 根據自定義字符串來緩存(部分)頁面

根據自定義字符串來緩存(部分)頁面

編輯:.NET實例教程
     比如說網站有一個Header.ascx用戶控件,每個頁面都調用此控件作為"頁面頭部",直接可以緩存此用戶控件就可以提交性能,不過,現在此Header.ascx用戶控件要顯示登陸用戶的登陸名,所以,就不能直接用下面這種緩存方式:
  
  <% @ OutputCache Duration = " 86400 " VaryByParam = " None " %>
  這個時候就可以利用"根據自定義字符串來緩存頁"這種方法了,具體如下:
  
  <%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
  然後在Global類裡面重寫方法 GetVaryByCustomString
  
   public override string GetVaryByCustomString(HttpContext context, string custom)
   {
   if(custom=="HeaderPageKey")
   {
   //緩存 Header.ascx 控件
   if(context.Request.IsAuthenticated)
   {
   return context.User.Identity.Name;
   }
   else
   {
   return "NoAuthenticated_User";
   }
   }
   return base.GetVaryByCustomString (context, custom);
   }
  用戶如果沒有登陸,那麼緩存一個版本,如果已經登陸,那麼根據登陸名的不同緩存另外一個版本,哈哈,為每個用戶都緩存了一個版本,這樣做,應該說不是很好的解決方法。
  
  上述緩存技術可以參考 http://msdn.microsoft.com/library/chs/default.ASP?url=/library/CHS/cpguide/Html/cpconcachingversionsofpagebasedonparameters.ASP
  
  另外,MSPetShop3.0裡面也用到了這樣的緩存方法,根據Request.Querystring以及是否登陸來緩存不同的版本,不過,這個緩存好像默認沒有開啟。
  
  
  
  出處:卡卡.Net 
   
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved