ASP.NET Core ResponseCacheAttribute - VaryByCustom?
Я использую Microsoft.AspNetCore.Mvc.ResponseCacheAttribute
в первый раз и столкнулся с проблемой, которую я бы решил ранее, используя VaryByCustom
недвижимость в OutputCache
в ASP.NET (и используя public override string GetVaryByCustomString(HttpContext context, string s)
в глобальном.asax).
Такое кэширование VaryByCustom больше не существует в ASP.NET Core. Есть ли встроенная альтернатива, которую я здесь упускаю, или мне нужно будет реализовать ее самостоятельно, чтобы добиться чего-то подобного?
1 ответ
Насколько я понимаю, у вас есть два гибких варианта в ядре ASP.NET:
- Использовать
VaryByHeader
или жеVaryByQueryKeys
если вы используетеResponseCacheAttribute
,
При использовании заголовков вам нужно записать значение, которое будет меняться в качестве заголовка, которое может быть любым произвольным значением (не нужно предоставлять данные клиенту):
Response.Headers.Add("X-My-Vary-Header", "this-is-variable");
По сути, это все VaryByCustomString
все равно сделал для тебя. На мой взгляд, вам больше не нужно помещать этот код в определенный метод / файл (например, global.asax).
- Попробуйте
<cache>
Tag Helper при кешировании в Razor.
Здесь у вас есть широкий спектр вещей, которые можно "варьировать": vary-by-header
, vary-by-route
, vary-by-user
и даже обычай vary-by
,
Посмотрите здесь и решите, использовать ли атрибут или вспомогательный тег кеша: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper