Я пытаюсь сделать некоторое использование кэширования 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.
Согласно этой ссылке MSDN , несколько значений в VaryByParam должны разделяться точкой с запятой, а не запятой.
Попробуйте использовать www.fiddlertool.com для проверки заголовков и убедитесь, что они передаются в первую очередь.
Ваша продолжительность установлена на 5 секунд. Это намеренно? Я подозреваю, что это может иметь какое-то отношение к тайм-ауту вашего кеша по истечении этого периода.