1

我在 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;
        });
    }

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

4

1 回答 1

1

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

于 2013-04-05T05:17:14.810 回答