ASP.NET Web APIでキャッシュを実現する2つの方式

2571 ワード


ASP.NET Web APIでキャッシュを実現するには大きく2つの考え方がある.1つはETag、もう1つはASP.NET MVCのOutputCache.ETagでキャッシュを実現するにはまずcachecowをインストール.serverinstall-package cachecow.serverはWebApiConfigにあります.
 
public static class WebApiConfig
{
    public static HttpConfiguraiton Register()
    {
        var config = new HttpConfiguration();
        
        //          
        config.MapHttpAttributeRoutes();
        
        config.Routes.MapHttpRoute(
            "DefaultRouting",
            "api/{controller}/{id}",
            defaults:new {id = RouteParamter.Optional}
        );
        
        //config.Formatters.JsonFormatter.SupportedMediaTypes
            .Add(new MediaTYpeHeaderValue("text/html"));
            
        config.Formatters.XmlFormatter.SupportedMediaType.Clear();
        
        config.Foramtters.JsonFormatter.SuppoortedMediaTypes.Add(
            new MediaTypeHeaderValue("application/json-patch+json");
        );
        
        config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCaseProeprtyNamesContractResolver();
        
        //HTTP           
        config.MessageHandlers.Add(new CacheCow.Server.CachingHandler(config));
        
        return config;
    }
}

 
→クライアントから要求GEThttp://localhost:43321/api/groups/1→200ステータスコードを返し、応答するHeadersで:ETag:W/"..."Last-Modified:...→再度お願いし、If-Nene-Martch属性でETagを持ち込みます.GET http://localhost:43321/api/groups/1Host:localhost:43321If-Nene-Martch:ETag:W/"→戻り304ステータスコードOutputCacheによりASPにキャッシュする.NET Web APIでキャッシュを実現するもう一つの考え方は、ASP.NET MVCにおけるOutputCache,具体的には,Strathweb.CacheOutput.WebApi 2関連ASP.NET Web APIキャッシュは、「ASP.NET Web APIにおいてETagによるキャッシュ」にもまとめられている.