[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.dotnet.framework.aspnet.webcontrols

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

Tom Kiefer

2/8/2004 10:57:00 PM

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


"Tom Kiefer" <thogek@earthlink.net> wrote in message
news:OYlrPNh4DHA.536@tk2msftngp13.phx.gbl...
> 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
>
>


3 Answers

Eric Lawrence [MSFT]

2/9/2004 12:07:00 AM

0

Just a guess-- Have you looked at VaryByControl?

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

Thanks,

Eric Lawrence
Program Manager
Assistance and Worldwide Services

This posting is provided "AS IS" with no warranties, and confers no rights.
"Tom Kiefer" <thogeknot@earthlinknot.net> wrote in message
news:OML$Sbp7DHA.1504@TK2MSFTNGP12.phx.gbl...
> 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
>
>
> "Tom Kiefer" <thogek@earthlink.net> wrote in message
> news:OYlrPNh4DHA.536@tk2msftngp13.phx.gbl...
> > 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
> >
> >
>
>


Tom Kiefer

2/9/2004 5:33:00 AM

0

According to
http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconOutpu...
and
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcachingmultipleversionsofusercontrolbasedonpara...,
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


"Eric Lawrence [MSFT]" <e_lawrence@hotmail.com> wrote in message
news:uJPyZCq7DHA.696@tk2msftngp13.phx.gbl...
> Just a guess-- Have you looked at VaryByControl?
>
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcachingmultipleversionsofusercontrolbasedonpara...
>
> Thanks,
>
> Eric Lawrence
> Program Manager
> Assistance and Worldwide Services
>
> This posting is provided "AS IS" with no warranties, and confers no
rights.
>
>
> "Tom Kiefer" <thogeknot@earthlinknot.net> wrote in message
> news:OML$Sbp7DHA.1504@TK2MSFTNGP12.phx.gbl...
> > 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
> >
> >
> > "Tom Kiefer" <thogek@earthlink.net> wrote in message
> > news:OYlrPNh4DHA.536@tk2msftngp13.phx.gbl...
> > > 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
> > >


Corey O'Mara

2/10/2004 4:19:00 AM

0

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.

--
Corey O'Mara
MCSD.NET, MCT

"Tom Kiefer" <thogeknot@earthlinknot.net> wrote in message
news:ukmrs4s7DHA.2416@TK2MSFTNGP10.phx.gbl...
> According to
> http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconOutpu...
> and
>
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcachingmultipleversionsofusercontrolbasedonpara...,
> 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
>
>
> "Eric Lawrence [MSFT]" <e_lawrence@hotmail.com> wrote in message
> news:uJPyZCq7DHA.696@tk2msftngp13.phx.gbl...
> > Just a guess-- Have you looked at VaryByControl?
> >
> >
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcachingmultipleversionsofusercontrolbasedonpara...
> >
> > Thanks,
> >
> > Eric Lawrence
> > Program Manager
> > Assistance and Worldwide Services
> >
> > This posting is provided "AS IS" with no warranties, and confers no
> rights.
> >
> >
> > "Tom Kiefer" <thogeknot@earthlinknot.net> wrote in message
> > news:OML$Sbp7DHA.1504@TK2MSFTNGP12.phx.gbl...
> > > 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
> > >
> > >
> > > "Tom Kiefer" <thogek@earthlink.net> wrote in message
> > > news:OYlrPNh4DHA.536@tk2msftngp13.phx.gbl...
> > > > 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
> > > >
>
>