当前位置:网站首页>ASP.NET CORE Study08
ASP.NET CORE Study08
2022-06-28 12:19:00 【人类群星闪耀时】
Get新知识:
缓存
相关概念:
缓存的类型:
总结:
总的来说,私有缓存会减少网络带宽的需求,同时会减少从缓存到API的请求。因为私有缓存是存储在客户端浏览器的,对于请求来说,如果缓存还在有限期内,那么请求连网络请求都不会发出会直接在客户端浏览器获取到响应,这样就减少网络请求次数,同样也会减少API请求次数。
而共享缓存不会节省缓存到API的网路带宽,但是它会减少请求到API的请求。因为共享缓存是存放在服务器端的,请求是一定要先到达服务器端,这就不会减少网络带宽,但会减少到API的请求,因为后续的请求都由缓存处理了,而不会每次都进行API执行。
所以,一般情况下,私有缓存和共享缓存应该配合一起使用,但缓存更使用于比较静态的资源,如图片,内容网页等,而对于经常变化的API则不太合适,如进行了添加或更新操作,按理其余的客户端应当获取到最新的资源,但如果是缓存,则其余的客户端在缓存期限内都只能获取旧的资源信息。
这就需要验证模型。
缓存使用
过期模型:
过期模型通过设定响应信息能保持多长时间是“新鲜”的状态来保持缓存的是否过期,通过Cache-Control 请求头来设置缓存是否过期。
过期缓存工作时,
第一次请求进入时会先经过缓存,但此时缓存内是空的,所以请求会进入到API,API会返回响应到缓存内,同时响应头内会包括 Cache-Control 响应头,指明缓存的存活时间和缓存类型等,缓存会将响应复制一份存在缓存中,并且返回响应,之后进入的请求只要在新鲜期内都不会进入到API内,而是由缓存直接返回响应。
验证模型:
用于验证缓存的响应数据是否是保持最新的。
当被缓存的数据将要成为客户端请求的响应的时候,它首先会检查一下源服务器或者拥有最新数据的中间缓存,看看它所缓存的数据是否仍然是最新。
一般情况下:
Cache-Control 常用指令
Cache-Conrtol 响应常用指令:
Cache-Control 请求常用指令:
ETag 的使用
第三方的 NuGet 包 Marvin.Cache.Headers 提供了非常完成且强大的 缓存管理 功能。
安装 Marvin.Cache.Headers 包,在 startup 的 configureservice 进行服务注册,在 configure 方法中使用缓存中间价。最后,在controller上或action上,进行特性标注。
该包提供了完整的功能。
并发控制
并发问题,可以是指 两个客户端,1和2,客户1先获取了某一个资源,随后客户2也获取了该资源,并且客户2进行了更新操作并且推送到服务器端,而此时客户1也对该资源进行更新操作,那么客户1的更改就会把客户2的全部覆盖,这就是并发控制。
悲观并发控制
就是资源为前一个客户锁定,只要资源处于锁定状态,别人就不能修改它,只有客户1可以修改,但这REST下无法实现,因为REST有无状态约束。
乐观并发控制
这就意味这客户1会得到一个Token,并允许他更新资源,只要Token是合理有效的,那么客户1就一直可以更新该资源。在REST中可以实现,而这个Token就是个验证器,而且要求是强验证器,所以可以使用ETag。
乐观并发控制 示例
示例图:
边栏推荐
- C语言 sprintf函数使用详解
- Truly understand triode beginner level chapter (Classic) "suggestions collection"
- Unity load settings: application backgroundLoadingPriority
- 【编解码】从零开始写H264解码器(1) 总纲
- Swin, three degrees! Eth open source VRT: a transformer that refreshes multi domain indicators of video restoration
- pwn入门(1)二进制基础
- websocket 1 分钟自动断开连接
- [unity Editor Extension Foundation], editorguilayout (I)
- 【Unity编辑器扩展基础】、EditorGUILayout (一)
- URL append parameter method, considering #$ Situation of
猜你喜欢

【C语言】NextDay问题

什么是数据合规?怎样做到数据合规?

Swin, three degrees! Eth open source VRT: a transformer that refreshes multi domain indicators of video restoration

最新!基于Open3D的点云处理入门与实战教程

分页样式 flex设置成在尾部显示(即使页数加长 也不会因为在末尾而换行)

【C语言】如何产生正态分布或高斯分布随机数

【C语言】二叉树的实现及三种遍历

【C语言】判断三角形
![[unity Editor Extension Foundation], editorguilayout (I)](/img/f2/42413a4135fd6181bf311b685504b2.png)
[unity Editor Extension Foundation], editorguilayout (I)

攻防世界新手入门hello_pwn
随机推荐
搭建学习环境
设置Canvas的 overrideSorting不生效
cdc同步 如果数据库表的主键发生了变化,会同步成两个数据 还是会同步更新主键呢?
[unity Editor Extension Foundation], editorguilayout (I)
登录接口存取token,清除token
Redis principle - List
Deep learning has a new pit! The University of Sydney proposed a new cross modal task, using text to guide image matting
It really doesn't matter if a woman fails to pass the college entrance examination and buys thousands of villas in a counter attack
[vi/vim] basic usage and command summary
Remoteviews layout and type restriction source code analysis
【Unity编辑器扩展实践】、查找所有引用该图片的预制体
【Unity编辑器扩展实践】、通过代码查找所有预制
Source code analysis of ArrayList
杰理之wif 干扰蓝牙【篇】
IDEA全局搜索快捷设置
Custom title bar view
C语言 sprintf函数使用详解
What is data compliance? How to achieve data compliance?
. Net hybrid development solution 24 webview2's superior advantages over cefsharp
Is tongdaxin stock software reliable? Is it safe to trade stocks on it?