Кэширование ответов Asp Net web api 2 (на стороне сервера) - PullRequest
1 голос
/ 08 мая 2019

Можно ли кэшировать один раз полученный ответ на стороне сервера, а затем повторно доставить его в ответ на тот же запрос?Позвольте мне объяснить: у меня есть endloint, который занимает около 5 секунд, чтобы сгенерировать ответ - это включает в себя переход к базе данных и выборку данных, их обработку, выполнение некоторых вычислений с ней, анализирование и сжатие ответа - все это занимает 5 секунд.Как только это будет сделано впервые, я хочу, чтобы результат был доступен для всех запросов, поступающих от всех пользователей.По моему мнению, кэширование на стороне клиента, когда вы либо кэшируете результат на клиенте, но не обращаетесь к серверу в течение некоторого времени, либо когда вы попадаете на сервер, но получаете 304 неизмененных вместо данных, недостаточно.То, что я хочу, это нажать на сервер, и если эта конечная точка (с тем же набором параметров) уже была вызвана кем-либо, то получаю полный ответ.Возможно ли это вообще?

1 Ответ

0 голосов
/ 08 мая 2019

У вас есть несколько вариантов для этого.

Одним из вариантов является кэширование на уровне API, вы создаете ключ, используя параметры, необходимые для генерации ответа, вы идете и извлекаете данные и сохраняете пару в кеше.Затем в следующий раз, когда приходит запрос, вы воссоздаете ключ и сначала идете и проверяете ваш кеш.Если он там, счастливые дни, верните его, если нет, то возьмите его и сохраните.

Это, конечно, зависит от количества данных, которые у вас есть, слишком много данных или слишком большие данные, и это не будет работать,Вы также можете хранить его некоторое время, например, 10 минут, 1 час и т. Д.

Если у вас много данных и такое кэширование невозможно, подумайте о другом.Возможно, создайте свое собственное хранилище кэша no-sql (возможно, используя что-то вроде MongoDB), сохраните его и получите его оттуда, без необходимости каких-либо изменений, так что это прямое получение, поэтому очень быстрое.

Вы также можетеиспользуйте что-то вроде Redis Cache.Множество вариантов, просто выберите то, что подходит.

...