• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET Web API实现缓存的2种方式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

在ASP.NET Web API中实现缓存大致有2种思路。一种是通过ETag, 一种是通过类似ASP.NET MVC中的OutputCache。

通过ETag实现缓存

首先安装cachecow.server

install-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;
    }
}

 

→ 客户端发出请求

GET http://localhost:43321/api/groups/1

→ 返回200状态码,在响应的Headers中:

ETag:W/"..."
Last-Modified:...

→ 再次请求,通过If-None-Match属性把ETag带上。

GET http://localhost:43321/api/groups/1
Host:localhost:43321
If-None-Match:ETag:W/""

→ 返回304状态码


通过OutputCache实现缓存

在ASP.NET Web API中实现缓存的另外一种思路是通过类似ASP.NET MVC中的OutputCache,具体可参考:Strathweb.CacheOutput.WebApi2

有关ASP.NET Web API缓存,在"ASP.NET Web API中通过ETag实现缓存"中也做了总结。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.netcore使用UEditor.Core实现ueditor上传功能发布时间:2022-07-10
下一篇:
谈asp.net解决方案的项目生成时的输出路径发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap