当前位置:网站首页>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。
乐观并发控制 示例
示例图:
边栏推荐
猜你喜欢

RemoteViews布局和类型限制源码分析

Ugui uses tips (VI) unity to realize vertical line display of string

Self use demo of basic component integration of fluent

已知两个点和中间一个比例的点,求该点坐标

Leetcode 48. 旋转图像(可以,已解决)

Ugui force refresh of layout components

ByteV搭建动态数字孪生网络安全平台----助力网络安全发展

我的NVIDIA开发者之旅-Jetson Nano 2gb教你怎么训练模型(完整的模型训练套路)

UGUI强制刷新Layout(布局)组件

多维度监控:智能监控的数据基础
随机推荐
How to deploy the software testing environment?
URL append parameter method, considering #$ Situation of
【Unity编辑器扩展基础】、GUI
双缓冲绘图
RemoteViews的作用及原理
JNI confusion of Android Application Security
KDD 2022 | 图“预训练、提示、微调”范式下的图神经网络泛化框架
【Unity编辑器扩展实践】、通过代码查找所有预制
Sha256 encryption tool class
请问通达信股票软件可靠吗?在上面交易股票安全吗?
[unity Editor Extension practice] dynamically generate UI code using TXT template
Privilege management of vivo mobile phone
AcWing 604. Area of circle (implemented in C language)
模板_大整数乘法
【Unity编辑器扩展实践】、利用txt模板动态生成UI代码
What is the difference between internal oscillator, passive crystal oscillator and active crystal oscillator?
If you want to change to software testing, how can you package your resume as a test engineer with 1 year of work experience
30套JSP网站源代码合集「建议收藏」
登录接口存取token,清除token
零基础C语言(一)