Кэширование ответов ядра Asp.net по странам

Мне нужно использовать кэширование ответов для определенных действий контроллера в зависимости от страны, из которой поступил запрос.

Я выяснил, как получить код страны из запроса (это связано с чтением из базы данных, дорого, поэтому я хочу сделать это только для действий, которые требуют страны), но я не уверен, как сделать часть кэширования,

Я думаю о написании промежуточного программного обеспечения (например, с именем CountryResolver), который будет работать до промежуточного программного обеспечения для кэширования ответов и задавать в запросе SOMEHOW для страны, а промежуточное программное обеспечение кэша ответов зависит от страны.

app.UseCountryResolver();
app.UseResponseCaching();

Есть две основные проблемы, с которыми я сталкиваюсь:

Проблема 1-

Мне нужно, чтобы это промежуточное программное обеспечение выполнялось не для каждого запроса, а только для некоторых запросов, которые направляются на действия, специфичные для конкретной страны. Я думаю о том, чтобы аннотировать такие специфические для страны действия с помощью специального атрибута (например, [CountryRequired]).

[CountryRequired]
[ResponseCache(VaryByQueryKeys = new string[] { "country"}]
public IActionResult MyAction()
{

Однако я не знаю, как промежуточное ПО может обрабатывать действия, которые имеют такую ​​аннотацию, чтобы он мог решить, искать ли страну или нет.

Задача 2- "... указать страну НЕКОТОРЫЕ в запросе"

Я думал об использовании VaryByQueryKeys и промежуточное программное обеспечение устанавливает страну на ключ строки запроса с именем "страна", НО HttpContext.Request.Query Коллекция только для чтения. Поэтому я не уверен, какой другой механизм я могу использовать для этого.

Любая помощь очень ценится.

0 ответов

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