ASP.NET Web API实现缓存的2种方式
2024-10-11 22:43:00
在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实现缓存"中也做了总结。
最新文章
- ASP.NET MVC中的两个Action之间值的传递--TempData
- 批处理——服务器的web文件备份
- oracle游标透彻详解分析
- [ActionScript 3.0] AS3.0 Socket通信实例
- web开发人员须知的web缓存知识–将数据缓存到浏览器端Net实现
- 电脑蓝屏分析教程,附工具WinDbg(x86 x64)6.12.0002.633下载
- XBox360自制系统的更新(Update)
- Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)
- SQL Server-聚焦什么时候用OPTION(COMPILE)呢?
- WebForm+一般处理程序+Ajax聊天
- tmux复制模式
- 阿里云 ECS centos java timer进程异常/混乱......的解决方法
- java反射知识相关的文章
- python 全栈开发,Day8(文件操作)
- 【BZOJ2229】【ZJOI2011】最小割
- URAL1099. Work Scheduling(一般图匹配带花树开花算法)
- 超酷的Prezi在线ppt制作网站
- PHP简单工厂模式、工厂方法模式和抽象工厂模式
- java获取IP地址
- IM
热门文章
- Expm 2_1 k-路合并操作问题
- 基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发
- java多线程快速入门(十五)
- PHP常见错误提示含义解释
- Fiddler抓包8-打断点(bpu)
- VS Code 折腾记 - (6) 基本配置/快捷键定义/代码片段的录入(snippet)
- python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性)
- python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)
- 《剑指offer》-铺地砖方案数
- maven加载第三方jar不能加载