ServiceStack不缓存Json

时间:2013-04-03 21:54:51

标签: servicestack

我在ASP.NET 4.5上使用ServiceStack。我在ServiceStack InMemory缓存方面遇到了麻烦。如果我直接从浏览器调用URL,它会撤回缓存版本,但如果我尝试通过JQuery中的getJSON调用它,它永远不会撤回缓存版本,只是每次都重新获取数据。

这是基本代码位......

    public class AResponse : IHasResponseStatus
{
    public ResponseStatus ResponseStatus { get; set; }

    public Html Html { get; set; }
}   

public object Get(A request)
    {
        var cacheKey = UrnId.Create<string>(request.UserKey + request.Id);
        var expireInTimespan = new TimeSpan(1, 0, 0);
        return RequestContext.ToOptimizedResultUsingCache(base.Cache, cacheKey, expireInTimespan, () =>
        {
            var ar = new AResponse();
            var html = new Html();
            html.Test = "test";
            ar.Html = html;
            return ar;
        });
    }

...感谢您的任何想法。

1 个答案:

答案 0 :(得分:1)

我的理解是,当您从浏览器调用服务时,您将缓存一个Html版本。因此,ServiceStack将通过在您的密钥上应用.html后缀来插入/检索。当你从JQuery调用它时,它将缓存一个Json版本并在你的密钥上应用.json后缀。您可以使用网址上的?format=json从浏览器调用您的服务来测试此问题。这将缓存一个json版本(而不是html),然后从JQuery调用以获取缓存的json。