首页 > 解决方案 > 如何使用 Servicestack 缓存内部服务调用

问题描述

是否可以缓存服务器对通过 Gateway.Send() 从另一个服务中完成的服务调用的响应?

我看到您的评论指出,如果我使用 [CacheResponse] 属性启用缓存,它应该可以工作。

但是,它并没有为我缓存响应。我正在使用 ServiceStack v5.1.0

谢谢

标签: servicestack

解决方案


ServiceStack 缓存功能仅缓存在注册的缓存提供程序中序列化并直接写入响应输出流的 HTTP 请求。

在流程服务网关请求永远不会序列化、缓存或写入流,当调用内部服务时,它们实际上是进程内 C# 方法调用,如果网关请求被路由到缓存的远程服务,它将返回缓存的按照正常的 HTTP 请求响应。

否则,如果您想缓存 In Memory Service Gateway 请求,您可以在 Service 实现中使用 ConcurrentDictionary 并像缓存任何昂贵的 C# 逻辑时那样记忆结果。


推荐阅读