ASP.NET OutPutCache VaryByParam и VaryByHeader с AJAX - PullRequest
11 голосов
/ 07 мая 2010

Я пытаюсь сделать кеширование с использованием 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 .

Ответы [ 3 ]

27 голосов
/ 12 августа 2010

Согласно этой ссылке MSDN , несколько значений в VaryByParam должны быть разделены точкой с запятой, а не запятой.

2 голосов
/ 07 мая 2010

Попробуйте использовать www.fiddlertool.com, чтобы проверить заголовки и посмотреть, передаются ли они в первую очередь.

1 голос
/ 07 мая 2010

Ваша продолжительность установлена ​​на 5 секунд.Это намеренно?Я подозреваю, что это может быть связано с истечением времени ожидания в вашем кэше.

...