Как кэшировать внутренние сервисные звонки с помощью Servicestack - PullRequest
0 голосов
/ 14 декабря 2018

Должна ли быть возможность кэшировать ответы сервера на вызовы служб, выполняемые через Gateway.Send () из другой службы?

Я видел ваши комментарии, в которых говорится, что если я включу кэширование с атрибутом [CacheResponse], то этодолжно работать.

Тем не менее, это не кэширует ответ для меня.Я использую ServiceStack v5.1.0

Спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

Функции кэширования ServiceStack кэшируют только те HTTP-запросы, которые сериализованы в зарегистрированном поставщике кэша и записаны непосредственно в поток вывода ответа.

В процессе Шлюз службы запросыникогда не сериализуются, не кэшируются и не записываются в поток, они фактически являются вызовом внутрипроцессного метода C # при вызове внутренней службы, если запрос шлюза перенаправляется в удаленную службу, которая кэшируется, он возвращает кэшированный ответ в соответствии с обычным HTTPrequest.

В противном случае, если вы хотите кэшировать запрос In Memory Service Gateway, вы можете использовать ConcurrentDictionary в реализации вашей службы и запоминать результаты, как при кэшировании любой дорогой логики C #.

...