ASP.NET OutPutCache VaryByParam and VaryByHeader with AJAX
Asked Answered
H

3

11

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.

Herold answered 7/5, 2010 at 6:41 Comment(1)
Turns out it may have just been an issue on my home machine. Testing it on another machine and it seems to work fine.Herold
T
28

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

Trainer answered 12/8, 2010 at 15:40 Comment(0)
D
2

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

Douche answered 7/5, 2010 at 6:46 Comment(0)
N
1

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.

Needs answered 7/5, 2010 at 7:55 Comment(1)
Apologies, I was playing with my settings before I copied and pasted that code. It is actually set to 120.Herold

© 2022 - 2024 — McMap. All rights reserved.