Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / Caching / February 2005

Tip: Looking for answers? Try searching our database.

User Control, @OutputCache, and varying the cache by property value

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Tom Kiefer - 24 Jan 2004 00:45 GMT
Question:
If I have an ASP.NET User Control which defines/exposes a property that the
page can use to specify a mode or data subset for the control to use, is
there a way to tell the @OutputCache directive to vary its cache based on
that property value?

I.e., I have:

   <my:control runat="server" id="mcOne" Flag="One" />
   <my:control runat="server" id="mcTwo" Flag="Two" />

where Flag is a public property of the code-behind class (whose value
affects the display output), and I want the Flag="One" instance to
output-cache separately from the Flag="Two" instance.

So far, the control seems to output-cache only one version of the control,
and all successive displays of the control use that cached version,
regardless of the Flag attribute value.

Other notes:

The @OutputCache directive's VaryByParam attribute works only with GET and
POST values.  (I did try VaryByParam="Flag" anyway, to no effect.)

Setting the @OutputCache directive's Shared attribute to "False" solves the
problem (by causing each usage of the control to cache separately), but has
the additional effect of requiring separate initial-loads and caches for
each page on which the control appears.  Since I currently only have two or
three possible values of the Flag attribute, but these controls may appear
on many pages (and there is some work invovled in the initial load of the
data for this control), this is not ideal.

There doesn't seem to be any sort of VaryByProperty attribute for
@OutputCache (which surprises me).  So...

Any other ideas?

- Tom Kiefer
 thogek @ earthlink . net
Anders Borum - 24 Jan 2004 01:08 GMT
Have you looked at VaryByCustom?

Signature

venlig hilsen / with regards
anders borum
--

Tom Kiefer - 24 Jan 2004 01:19 GMT
Yes, but I'm unclear on how that construct would be able to access anything
specific to the control being cached.

From
http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconOutputCache.asp
and
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWebHttpApplication
ClassGetVaryByCustomStringTopic.asp
, I
see VaryByCustom allowing me to specify arbitrary rules that can act on the
HttpContext of the current request, but not on details within the control
itself (such as the value of a given property).

Unless I'm missing something....

- Tom Kiefer
 thogek @ earthlink . net

> Have you looked at VaryByCustom?
Tom Kiefer - 08 Feb 2004 22:56 GMT
I'm guessing from the lack of response that there's no ready way to do what
I'm looking for.  :-(

If anyone from Microsoft is reading this, is there any indication that any
future versions of ASP.NET might support what I attempt to describe below?

- Tom Kiefer
 thogek @ earthlink . net

> Question:
> If I have an ASP.NET User Control which defines/exposes a property that the
[quoted text clipped - 35 lines]
> - Tom Kiefer
>   thogek @ earthlink . net
Eric Lawrence [MSFT] - 09 Feb 2004 00:06 GMT
Just a guess-- Have you looked at VaryByControl?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cp
concachingmultipleversionsofusercontrolbasedonparameters.asp


Thanks,

Eric Lawrence
Program Manager
Assistance and Worldwide Services

This posting is provided "AS IS" with no warranties, and confers no rights.
> I'm guessing from the lack of response that there's no ready way to do what
> I'm looking for.  :-(
[quoted text clipped - 48 lines]
> > - Tom Kiefer
> >   thogek @ earthlink . net
Tom Kiefer - 09 Feb 2004 05:33 GMT
According to
http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconOutputCache.asp
and
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcachingmultipleversion
sofusercontrolbasedonparameters.asp
,
this sounds like VaryByControl directs the control to tie its caching
conditions (in a way that is unclear to me) to those of child control whose
ID matches the value of the VaryByControl attribute -- not quite what I'm
looking for.  (I suppose that, with some work, I might be able to kludge
this into what I want, but...)

I'm looking for a way to direct the control to cache itself separately for
each value of an arbitrary specified property of that control.  Sort of a
VaryByProperty="Flag" which would cause the control to be cached separately
for each value of the control's Flag property, as specified in the control's
HTML declaration (i.e., separately for Flag="One", Flag="Two", etc.).

I'm rather suprised that a VaryByProperty attribute of the @OutputCache
directive does not already exist (whether by that name or some other).

Again, unless I'm completely misunderstanding....

- Tom Kiefer
 thogek @ earthlink . net

> Just a guess-- Have you looked at VaryByControl?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cp
concachingmultipleversionsofusercontrolbasedonparameters.asp


> Thanks,
>
[quoted text clipped - 62 lines]
> > > - Tom Kiefer
> > >   thogek @ earthlink . net
Corey O'Mara - 10 Feb 2004 04:18 GMT
I believe VaryByControl is what you're looking for. VayByControl should
accept the name of a property of that control and you'll get different cache
variations depending on the value set in the prop.

Signature

Corey O'Mara
MCSD.NET, MCT

> According to
> http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconOutputCache.asp
> and

http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcachingmultipleversion
sofusercontrolbasedonparameters.asp
,
> this sounds like VaryByControl directs the control to tie its caching
> conditions (in a way that is unclear to me) to those of child control whose
[quoted text clipped - 17 lines]
>
> > Just a guess-- Have you looked at VaryByControl?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cp
concachingmultipleversionsofusercontrolbasedonparameters.asp


> > Thanks,
> >
[quoted text clipped - 71 lines]
> > > > - Tom Kiefer
> > > >   thogek @ earthlink . net
andujar brice - 15 Feb 2005 16:22 GMT
did you have find any solution for this problem, i have exactly the same
and i don't know how to solve it

thanks a lot

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.