Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET OutPutCache VaryByParam and VaryByHeader with AJAX

I'm trying to do some caching using VaryByParam AND VaryByHeader. When an AJAX request comes in I return a partial XHTML. When a regular request comes in I send the partial XHTML page with header / footer.

I tried to cache the page by doing:

[OutputCache( Duration = 5, VaryByParam = "nickname,page", VaryByHeader = "X-Requested-With" )]

However this doesn't work... if I do a regular request first then run the AJAX call I get the full cached page instead of the partial and vice-versa. Seems like VaryByHeader is being ignored. Is it because X-Requested-With is omitted on normal requests? Or perhaps it's doing VaryByParam OR VaryByHeader?

My obvious way around this is for AJAX requests to call a different method which only returns partial pages, however I'd like to avoid that if possible.

I'm using ASP.NET MVC 1.0 with the OutputCacheAttribute.

like image 666
Denny Ferrassoli Avatar asked May 07 '10 06:05

Denny Ferrassoli


3 Answers

According to this MSDN reference, multiple values in VaryByParam should be semicolon separated, not comma separated.

like image 198
Peter Lillevold Avatar answered Oct 13 '22 00:10

Peter Lillevold


Try using www.fiddlertool.com to check the headers and see if they are being passed in the first place.

like image 25
Rahul Soni Avatar answered Oct 13 '22 00:10

Rahul Soni


Your Duration is set to 5 seconds. Is this intentional? I suspect might have something to do with your cache timing out after this period.

like image 37
Daniel Dyson Avatar answered Oct 12 '22 22:10

Daniel Dyson