ServiceStack是否缓存内部请求?

时间:2018-11-16 11:35:47

标签: caching servicestack

如果我从“裸”请求中使用.ToOptimizedResult(记录为here),如下所示:

var svc = new MyService();
var svcResul = svc.Any(new requestDTO() {..});

svcResult的性能会从缓存中受益吗,还是必须从Http / Messaging / Client调用它?

注意:应用程序实际上正在运行servicestack容器。.但是,上述调用者不是从服务内部调用的。

1 个答案:

答案 0 :(得分:1)

ServiceStack默认情况下不执行任何请求缓存,您必须使用一种缓存策略选择加入缓存。

您不应在要直接调用的服务中使用ToOptimizedResult(),对于缓存的请求,它会返回序列化的压缩byte[]结果,该结果不能作为C#API的类型化响应DTO进行访问。

对于要通过C#调用的缓存服务,可以改用CacheResponse Attribute

致电其他服务

注意:推荐的其他服务调用方式是使用Service Gateway,例如:

var result = Gateway.Send(new RequestDto());

如果您想直接在服务上调用C#方法,则应使用ResolveService来解析自动装配的服务,并在using语句中调用该方法,例如:

using (var service = base.ResolveService<MyService>())
{
    var result = service.Any(new RequestDto());
}