Атрибут outputcache на стороне клиента с частичными страницами - PullRequest
4 голосов
/ 20 июня 2011

Я частичная страница, создающая меню для приложения. Я вызываю частичное представление меню, используя визуализацию. Я хочу сохранить эту частичную страницу на стороне клиента, выполнив это

[OutputCache(Duration=7200, Location  =OutputCacheLocation.Client, NoStore= true)]

но я получаю следующую ошибку

OutputCacheAttribute for child actions only supports Duration, VaryByCustom, and VaryByParam values. Please do not set CacheProfile, Location, NoStore, SqlDependency, VaryByContentEncoding, or VaryByHeader values for child actions

Любая альтернатива этому

1 Ответ

2 голосов
/ 21 июня 2011

Кэширование на стороне клиента невозможно для партиалов в MVC 3. Браузер клиента просто получает HTML, «партиалы» существуют только на стороне сервера.

Почему вы не используете кэширование на стороне сервера?

Если содержимое вашего меню зависит от пользователя, вы можете добавить соответствующую информацию о пользователе в параметры вашего дочернего действия. Например:

[OutputCache(Duration=7200, VaryByParam="*")]  
public PartialViewResult Menu(int userId)
{
   ...
}
...