Я просто тестировал выходное кэширование в RC-сборке ASP.NET MVC 3.
Как бы то ни было, это не чтит свойство VaryByParam (точнее, я не уверен, что понимаю, что происходит):
public ActionResult View(UserViewCommand command) {
Здесь UserViewCommand имеет свойство slug, которое используется для поиска пользователя из базы данных.
Это мое объявление OutputCache:
[HttpGet, OutputCache(Duration = 2000, VaryByParam = "None")]
Однако, когда я пытаюсь использовать метод Action, используя разные значения "slug" (путем манипулирования URL-адресом), вместо того, чтобы использовать неправильные данные (которые я пытаюсь применить по дизайну), вместо этого он вызывает метод действия.
Итак, например (в порядке вызова)
/user/view/abc → Вызывает метод действия с slug = abc /user/view/abc → Не активирован метод действий /user/view/xyz → снова вызывает метод действия с slug = xyz! Не предполагается ли оно выйти из кеша, потому что VaryByParam = none?
Кроме того, каков рекомендуемый способ OutputCaching в такой ситуации? (пример выше)