Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Partial Caching AddCacheItemDependency problem

Reply
Thread Tools

Partial Caching AddCacheItemDependency problem

 
 
the4man
Guest
Posts: n/a
 
      02-22-2006
Hi all!!

I have a very stupid and simple project, just for testing, with only
one page (default.aspx), and one user control. The user control only
shows the time in an asp:literal each time the page is requested.

I want to cache the content of the user control (not the entire page),
and I want to invalidate that cache when I need. To do this, I have
added an "OuputCache" directive in my USER control. Furthermore I have
a button to invalidate the cache. This is the user control code:

protected void Page_Load(object sender, EventArgs e)
{
Literal1.Text = DateTime.Now.ToLongTimeString();
Response.AddCacheItemDependency("cachecontrol");
}
protected void Button1_Click(object sender, EventArgs e)
{
HttpContext.Current.Cache.Insert("cachecontrol", DateTime.Now);
Response.Redirect("~/Default.aspx");
}

In the global.asax, I have this:

void Application_Start(object sender, EventArgs e)
{
HttpContext.Current.Cache.Insert("cachecontrol", DateTime.Now);
}

This code is base in the examples of this article:
http://aspalliance.com/668

Well, it does not work. All my attemps to invalidate the cache of the
user control have been unsucessfull. Only if I put the "OutputCache"
directive in the default.aspx (what means cache the entire page) the
cache invalidation mechanism works.

Can anyone help me? How can I invalidate a partial-cached web page?

Thanks in advance!

 
Reply With Quote
 
 
 
 
the4man
Guest
Posts: n/a
 
      02-22-2006
Answer my self:

>From microsoft.com

(http://msdn2.microsoft.com/en-us/library/t1d120ks.aspx ):

You cannot call the AddCacheItemDependency method in an ASP.NET user
control. However, in any user control that specifies the @ OutputCache
directive, you can create a CacheDependency object that describes the
cache key dependency and assign it to the Dependency property of the
UserControl object.

solution:

User control code:

protected void Page_Load(object sender, EventArgs e)
{
Literal1.Text = DateTime.Now.ToLongTimeString();
String[] dependencyKey = new String[1];
dependencyKey[0] = "cachecontrol";

BasePartialCachingControl pcc = Parent as
BasePartialCachingControl;
pcc.Dependency = new CacheDependency(null,
dependencyKey);
}

Default.aspx code (note that now the button to invalidate the cache is
outside the user control):

HttpRuntime.Cache.Insert("cachecontrol", DateTime.Now)

Global.asax:

void Application_Start(object sender, EventArgs e)
{
HttpRuntime.Cache.Insert("cachecontrol", DateTime.Now);
}

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: Partial 1.0 - Partial classes for Python Thomas Heller Python 13 02-08-2007 08:12 PM
Re: Partial 1.0 - Partial classes for Python J. Clifford Dyer Python 0 02-08-2007 05:29 PM
Partial page caching by user wapsiii ASP .Net 1 02-20-2006 01:23 AM
Why? Partial Class within a Partial class Billy ASP .Net 2 02-01-2006 09:10 AM
User Control Partial Caching Ryan Gregg ASP .Net 0 07-18-2003 06:29 AM



Advertisments