简体   繁体   中英

How to use output cache programmatically for a particular user control?

I want to apply output cache programmatically to a particular control. But when I'm using this code, it stores all the page and other user control in cache output.

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

HttpResponse.Cache property gets caching policy (such as expiration time, privacy settings, and vary clauses) of a whole web page. That's why the code above caches the whole web page.

To cache your user control you could use PartialCachingAttribute . Is says that your control supports fragment caching. And then programmatically change the necessary caching properties through UserControl.CachePolicy property:

[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);
        }
    }
}

Additional information could be found in the Caching Portions of an ASP.NET Page articke on MSDN.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM