ASP.NET OutPutCache VaryByParam и VaryByHeader с AJAX

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


person Denny Ferrassoli    schedule 07.05.2010    source источник
comment
Оказывается, это может быть проблема только на моей домашней машине. Проверил на другой машине, вроде работает нормально.   -  person Denny Ferrassoli    schedule 07.05.2010


Ответы (3)


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

person Peter Lillevold    schedule 12.08.2010

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

person Rahul Soni    schedule 07.05.2010

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

person Daniel Dyson    schedule 07.05.2010
comment
Извините, я играл со своими настройками, прежде чем скопировать и вставить этот код. На самом деле установлено значение 120. - person Denny Ferrassoli; 07.05.2010