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:

  1. Использовать VaryByHeader или же VaryByQueryKeys если вы используете ResponseCacheAttribute,

При использовании заголовков вам нужно записать значение, которое будет меняться в качестве заголовка, которое может быть любым произвольным значением (не нужно предоставлять данные клиенту):

Response.Headers.Add("X-My-Vary-Header", "this-is-variable");

По сути, это все VaryByCustomString все равно сделал для тебя. На мой взгляд, вам больше не нужно помещать этот код в определенный метод / файл (например, global.asax).

  1. Попробуйте <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

Другие вопросы по тегам