Я использую пакет awesom MVCDonutCaching от Nuget для кэширования целых страниц, оставляя некоторые части без кэширования. Процесс прост и все работает как надо:
Я кеширую следующим образом:
[DonutOutputCache(CacheProfile = "FiveMins")]
public ActionResult Index()
{
return View();
}
Для раздела моей страницы, который я не хочу кэшировать, я делаю следующее:
@Html.Action("HeaderLinks","Home", true)
Это работает так, как должно, и, действительно, большая часть страницы кэшируется, но мои ссылки в заголовке - контекстно-зависимые ссылки, отображающие кнопку входа в систему, если пользователь не вошел в систему, его имя пользователя, если они есть, и т. Д. - не кэшируются , Пока все работает.
Проблема, с которой я сталкиваюсь, заключается в том, что ссылки на заголовки принадлежат главной странице / странице макета и используются повсеместно - независимо от того, установлено ли в действии атрибут DonutOutputCache или нет. Когда я создаю другое действие, давайте назовем его «о нас», без атрибута кэширования пончика. Я вообще не вижу ссылки на заголовки
public ActionResult AboutUs()
{
return View();
}
Глядя на исходный код, я вижу следующее
<!--Donut#
<ActionSettings xmlns="http://schemas.datacontract.org/2004/07/DevTrends.MvcDonutCaching" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ActionName>HeaderLinks</ActionName>
<ControllerName>Home</ControllerName>
<RouteValues xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:KeyValueOfstringanyType>
<a:Key>Area</a:Key>
<a:Value i:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema"/>
</a:KeyValueOfstringanyType>
</RouteValues>
</ActionSettings>
#-->
Очевидно, что в приведенном выше примере, который генерируется библиотекой кэширования пончиков - раздел ссылок заменяется некоторым закомментированным XML.
Вкратце мой вопрос: возможно ли в этой библиотеке повторно использовать одно и то же дочернее действие независимо от того, использует ли родительское действие кэширование пончика или нет?
Буду признателен за любую помощь.