61

ASP.NET MVC 4 を WEB API で使用しています

次のアクションがあります。以下に示すアクションでは、サービスメソッドがDoMagic()メソッドへのdb呼び出しを行い、整数値を返します。これをすべてのページで使用しています。このアクションはajax呼び出しを使用して呼び出されます。

以下は私のWEB APIアクションです:

[OutputCache(Duration = 86400, VaryByParam = "none")]
[ActionName("GetMyMagicNumber")]
public int GetMyMagicNumber()
{
    if (WebSecurity.IsAuthenticated)
    {
        var revenue = _magicService.DoMagic();
        return revenue;
    }
    return 0;
}

私の質問: 使用[OutputCache(Duration = 86400, VaryByParam = "none")]してみましたが、最初に db 呼び出しが行われ、このアクションへの次の後続の要求でキャッシュされた値が返されることを除いて例外がありましたが、これは起こっていません。

db 呼び出しが再度行われます。db 呼び出しには時間がかかります。これを機能させるにはどうすればよいですか?

4

4 に答える 4

56

Unfortunately, caching is not built into ASP.NET Web API.

Check this out to get you on track: http://www.strathweb.com/2012/05/output-caching-in-asp-net-web-api/

An updated resource here: https://github.com/filipw/AspNetWebApi-OutputCache

EDIT: As of 2020-02-03, even though this answer is quite old, it's still valid.

Both of the URL's above lead to the same project, ASP.NET Web API CacheOutput by Filip W

于 2013-02-11T12:28:32.083 に答える