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=jsonURLを使用してブラウザからサービスを呼び出すことで、これをテストできます。これは、(html ではなく) json バージョンをキャッシュし、JQuery から呼び出してキャッシュされた json を取得します。

于 2013-04-05T05:17:14.810 に答える