我正在尝试使用VaryByParam和VaryByHeader进行一些缓存。当收到AJAX请求时,我将返回部分XHTML。当收到常规请求时,我发送带有页眉/页脚的部分XHTML页面。

我试图通过执行以下操作来缓存页面:

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

但是,这不起作用...如果我先执行常规请求,然后运行AJAX调用,则会得到完整的缓存页面,而不是部分缓存,反之亦然。好像VaryByHeader被忽略了。是因为在常规请求中省略了X-Requested-With吗?还是在做VaryByParam或VaryByHeader?

我解决此问题的明显方法是让AJAX请求调用不同的方法,该方法仅返回部分页面,但是,如果可能的话,我想避免这种情况。

我正在将ASP.NET MVC 1.0与 OutputCacheAttribute 一起使用。

最佳答案

根据this MSDN reference,VaryByParam中的多个值应以分号分隔,而不是逗号分隔。

09-11 20:33