2012-03-24 79 views
3

我想以編程方式將輸出緩存應用於特定控件。但是當我使用這段代碼時,它將所有頁面和其他用戶控件存儲在緩存輸出中。如何以編程方式爲特定用戶控件使用輸出緩存?

if (Session["id"] != null) 
    {    
     Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); 
     Response.Cache.SetCacheability(HttpCacheability.Public); 
     Response.Cache.SetValidUntilExpires(true); 
    } 
+0

看起來和這個問題一樣:[在ASP.NET中緩存用戶控件](http://stackoverflow.com/questions/568837/caching-a-user-control-in-asp-net) – 2012-03-24 11:00:41

回答

7

HttpResponse.Cache屬性獲取緩存策略(如過期時間,隱私設置,並改變條款)整個網頁。這就是爲什麼上面的代碼緩存整個網頁。

要緩存您的用戶控件,您可以使用PartialCachingAttribute。是您的控件支持片段緩存。然後通過編程UserControl.CachePolicy屬性更改所需的高速緩存屬性:

[PartialCaching(0)] 
public partial class MyControl : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["id"] != null) 
     {    
      this.CachePolicy.Duration = TimeSpan.FromSeconds(60); 
     } 
    } 
} 

更多信息可在Caching Portions of an ASP.NET Page articke在MSDN上找到。

+0

thk alex回覆它的工作。 – pargan 2012-03-26 08:01:23

+0

亞歷克斯是它在客戶端或服務器端的緩存存儲。我想在客戶端存儲緩存。 – pargan 2012-03-26 08:36:05

+0

@pargan,部分緩存僅適用於服務器端。完全緩存可以用於客戶端和服務器端,或者兼而有之。 – Alex 2012-03-26 12:27:56

相關問題