ServiceStack:默认情况下是否会缓存“GET”结果?

时间:2013-03-22 18:40:30

标签: servicestack

我遇到的问题是POST后我的第二个GET请求根本没有执行但是在POST之前返回结果。我根本看不到提琴手发出的请求。如果我重新启动应用程序,它将返回正确的结果。我没有设置任何缓存。路由配置如下:

container.RegisterAutoWired<ComplianceService>().ReusedWithin(ReuseScope.Request);

Routes.Add<CertificateDefinitionList>("/certificates","GET");
Routes.Add<CertificateDefinition>("/certificates/{CertificateDefinitionId}", "GET");
Routes.Add<CertificateDefinitionSave>("/certificates","POST");

2 个答案:

答案 0 :(得分:1)

ServiceStack中没有隐式缓存。如果您想缓存响应,则需要将其明确请求为seen on the Caching wiki

public object Get(CachedOrders request)
{
    var cacheKey = "unique_key_for_this_request";
    return RequestContext.ToOptimizedResultUsingCache(base.Cache,cacheKey, () => 
        {
            //Delegate is executed if item doesn't exist in cache 
            //Any response DTO returned here will be cached automatically
        });
}

答案 1 :(得分:1)

这可能是由您的代理在本地缓存结果引起的。默认情况下,在http get上启用缓存。在http标头中指定http缓存。