首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Web缓存 - HTTP协议缓存

为什么要使用 Web 缓存 Web缓存一般分为浏览器缓存、代理服务器缓存以及网关缓存,本文主要讲的是 浏览器缓存,其它两种缓存大家自行去了解下。 Web 缓存游走于服务器和客户端之间。...浏览器缓存控制机制 浏览器缓存控制机制有三种:HTML5离线存储和本地缓存、HTML Meta 标签、HTTP 协议缓存。...HTTP 协议缓存 HTTP 协议缓存是我们本文讲解的重点,它是通过 HTTP 头信息来控制缓存的,HTTP 头信息可以让你对浏览器和代理服务器如何处理你的副本进行更多的控制。...下面我们就从该流程中出现的 HTTP 状态码 200(from cache)和 304 来讲解 HTTP 协议缓存中的 HTTP 头信息。...创建支持缓存网站的小技巧 通过上面的介绍,我们知道 HTTP 协议缓存的机制,目的就是让你可以更灵活更细致的控制浏览器缓存,从而让你的网站的缓存更加友好,用户体验更完美。

98420

http协议缓存小结

缓存可以使用expire方式,设置到期时间,缓存的时间等于expire设置的时间减去当前的时间 也可以使用no-cache的方式进行缓存,当设置了no-cache的方式时,以no-cache的为准,expire...不起作用 no-cache下常见的有no-store,no-cache,max-age,must-revalidate no-store,不做缓存,每次返回200,拉取最新的资源 no-cache缓存一份...,每次会读取最新的缓存内容 max-age配合must-revalidate使用,每次校验是否过期,如果没过期就读取缓存返回403,当设置了no-cache时,以no-cache为准 如何判断是否是最新的缓存...if-none-match字段里, 发送请求时会带上,if-none-match和if-modified-since字段去服务端,和Etag和last-modified比较, 这两组也可以单独比较来判断缓存是否是最新

60940
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    http缓存协议详细介绍

    摘要本文将深入探讨HTTP缓存协议的基本原理、缓存策略以及来自服务器和客户端的缓存指令。我们将详细解析缓存标志和相关头部字段,以帮助开发人员更好地理解和应用HTTP缓存机制。1....这些缓存指令和头部字段在HTTP协议中起着关键作用,帮助服务器和客户端进行缓存控制、协商和验证。Last-Modified:Last-Modified是响应头部字段,表示资源的最后修改时间。...服务器可能会产生两个情况:缓存已经失效 (200)缓存仍然有效(304)5. 缓存标志HTTP协议中使用一些标志来表示资源是否被缓存或如何进行缓存。...No-Store:表示响应不能被任何形式的缓存进行保存。结论--HTTP缓存协议是提高性能和用户体验的重要机制。...通过合理应用HTTP缓存协议,我们可以减少网络流量、提高性能,并提供更好的用户体验。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    37440

    计网 - HTTP 协议_强制缓存和协商缓存的区别

    网页用的语言后来被称作超文本标记语言(HTML),而在服务器和客户端之间传输网页的时候,伯纳斯·李没有直接使用传输层协议,而是在 TCP 的基础上构造了一个应用层协议,这个就是超文本传输协议 HTTP。...HTTP 的请求和响应都是文本,你可以简单认为 HTTP 协议利用 TCP 协议传输文本。...这个方案要求浏览器将文件缓存到本地,并且设置这个文件的失效时间(或者永久有效)。这种请求过一次不需要再次发送请求的缓存模式,在 HTTP 协议中称为强制缓存。...为了应对这种场景,HTTP 协议还设计了协商缓存。协商缓存启用后,第一次获取接口数据,会将数据缓存到本地,并存储下数据的摘要。第二次请求时,浏览器检查到本地有缓存,将摘要发送给服务端。...HTTP 3.0 开始采用 UDP 协议,并在 UDP 协议之上,根据 HTTP 协议的需求特性,研发了网络层、应用层去解决可靠性等问题。

    56840

    缓存一致性协议——MESI

    可见性问题的产生 CPU的高速缓存 缓存包含L1(L1d-数据缓存(存放数据)、L1i指令缓存(执行数据的指令码))、L2、L3,其中L3是CPU共享,而L1和L2是每个cpu独占的缓存空间。...这样肯定不可取,所以又继续优化,就出来了缓存锁,相对于总线锁,降低了锁的力度,那么它怎么去保存缓存的数据一致性? 缓存锁引入了缓存一致性协议来保证,有MSI,MESI.MOSI等等!...CPU为何要有高速缓存 CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。...带有高速缓存的CPU执行计算的流程: 程序以及数据被加载到主内存 指令和数据被加载到CPU的高速缓存 CPU执行指令,把结果写到高速缓存 高速缓存中的数据写回主内存 CPU缓存一致性协议MESI MESI...每个Cache line有4个状态,它们分别是: 协议动态演示地址 超级好用 链接: MESI动态地址 具体的细节动态图里有详细体现,比我在这哔哔哔半天有用的多 总结Volatile作用 1

    40020

    浏览器 HTTP 协议缓存机制详解

    服务端缓存又分为 代理服务器缓存 和 反向代理服务器缓存(也叫网关缓存,比如 Nginx反向代理、Squid等),其实广泛使用的 CDN 也是一种服务端缓存,目的都是让用户的请求走”捷径“,并且都是缓存图片...2、浏览器缓存机制详解 浏览器缓存控制机制有两种:HTML Meta标签 vs....HTTP头信息 2.1 HTML Meta标签控制缓存 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires; Cache-control等)。...但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以在HTML页面的节点中加入标签,代码如下: <META HTTP-EQUIV="Pragma...使用上很简单,但只有部分浏览器可以支持,而且所有<em>缓存</em>代理服务器都不支持,因为代理不解析HTML内容本身。而广泛应用的还是 HTTP头信息 来控制<em>缓存</em>,下面我主要介绍HTTP<em>协议</em>定义的<em>缓存</em>机制。

    1.4K50

    缓存一致性协议(MESI)

    笔者在学习过程中发现了一个不错的网站,模拟了MESI协议流程,现分享下: https://www.scss.tcd.ie/Jeremy.Jones/vivio/caches/MESI.htm 运行效果图如下所示...、CPU1两个核心分别执行a0++后的效果图,执行顺序是CPU1执行a0++操作,然后CPU0执行a0++操作, 我们可以看出CPU0根CPU1中a0副本变量的值是不一样的,而且CACHE1中a0所在缓存行状态为...被volatile修饰的变量在执行时会有lock指令,该指令借助MESI协议保证数据写回到主内存,同时使得其他CPU核缓存的工作缓存变量失效,这样其他线程(不同CPU核心)再次操作该数据时,从缓存中取数据时发现该副本失效而重新从主内存加载该变量到工作内存中

    48210

    CPU缓存一致性协议MESI

    CPU 缓存一致性协议 MESI ================ CPU 高速缓存(Cache Memory) ---------------------- CPU 为何要有高速缓存 CPU 在摩尔定律的指导下以每...] 目前流行的多级缓存结构 由于 CPU 的运算速度超越了 1 级缓存的数据 I\O 能力,CPU 厂商又引入了多级的缓存结构。...多级缓存结构 [007S8ZIlgy1gj6nx5wl9rj30im0jgq4r.jpg] 多核 CPU 多级缓存一致性协议 MESI --------------------- 多核 CPU 的情况下有多个一级缓存...这里就引出了一个一致性的协议 MESI。 MESI 协议缓存状态 MESI 是指 4 中状态的首字母。...CPU 切换状态阻塞解决 - 存储缓存(Store Bufferes) 比如你需要修改本地缓存中的一条信息,那么你必须将 I(无效)状态通知到其他拥有该缓存数据的 CPU 缓存中,并且等待确认。

    1K00

    CPU缓存一致性协议MESI

    多级缓存结构 多核CPU多级缓存一致性协议MESI 多核CPU的情况下有多个一级缓存,如何保证缓存内部数据的一致,不让系统数据混乱。这里就引出了一个一致性的协议MESI。...MESI协议缓存状态 MESI 是指4中状态的首字母。每个Cache line有4个状态,可用2个bit表示,它们分别是: 缓存行(Cache line):缓存存储数据的单元。...缓存行也必须监听其它缓存读主存中该缓存行的操作,一旦有这种操作,该缓存行需要变成S(共享)状态。...缓存行也必须监听其它缓存使该缓存行无效或者独享该缓存行的请求,并将该缓存行变成无效(Invalid)。 I 无效 (Invalid) 该Cache line无效。...如果一个缓存将处于S状态的缓存行作废了,而另一个缓存实际上可能已经独享了该缓存行,但是该缓存却不会将该缓存行升迁为E状态,这是因为其它缓存不会广播他们作废掉该缓存行的通知,同样由于缓存并没有保存该缓存行的

    27630

    真正“搞”懂HTTP协议12之缓存代理

    我们在前两篇的内容中分别学习了缓存和代理,大致了解了缓存有哪些头字段,代理是如何服务于服务器和客户端的,那么把两者结合起来,代理缓存,也就是说代理服务器也可以缓存,当客户端请求数据的时候,未必一定要追溯到源服务器上...在HTTP的缓存体系中,缓存代理的身份十分特殊,它既是客户端,又是服务器,同时呢,它也既不是客户端,又不是服务器。...建议大家对比着缓存那篇文章来看~ 一、源服务器的缓存控制   源服务器的缓存控制,额……原谅我重复了一遍标题,在有代理服务器的场景下,它控制了哪些设备或者说终端或者说客户端呢?...二、客户端的缓存控制。   客户端的缓存控制相比于源服务器的缓存控制,在加入了代理的场景下要相对简单一些。...如果代理上没有缓存或者缓存过期,就应该给客户端返回一个 504(Gateway Timeout)。

    47430

    科普:CPU缓存一致性协议

    多核CPU多级缓存一致性协议MESI 多核CPU的情况下有多个一级缓存,如何保证缓存内部数据的一致,不让系统数据混乱。这里就引出了一个一致性的协议MESI。...缓存一致性协议MESI MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议...MESI协议中的状态 CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示): M: 被修改(Modified) 该缓存行只被缓存在该CPU的缓存中,并且是被修改过的...而S状态可能是非一致的,如果一个缓存将处于S状态的缓存行作废了,而另一个缓存实际上可能已经 独享了该缓存行,但是该缓存却不会将该缓存行升迁为E状态,这是因为其它缓存不会广播他们作废掉该缓存行的通知,同样由于缓存并没有保存该缓存行的...参考: 计算机体系结构(第五版)-复习-MESI&MOESI协议 https://www.cnblogs.com/yanlong300/p/8986041.html https://www.cnblogs.com

    29510

    科普:CPU缓存一致性协议

    多核CPU多级缓存一致性协议MESI 多核CPU的情况下有多个一级缓存,如何保证缓存内部数据的一致,不让系统数据混乱。这里就引出了一个一致性的协议MESI。...缓存一致性协议MESI MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议...MESI协议中的状态 CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示): M: 被修改(Modified) 该缓存行只被缓存在该CPU的缓存中,并且是被修改过的...而S状态可能是非一致的,如果一个缓存将处于S状态的缓存行作废了,而另一个缓存实际上可能已经 独享了该缓存行,但是该缓存却不会将该缓存行升迁为E状态,这是因为其它缓存不会广播他们作废掉该缓存行的通知,同样由于缓存并没有保存该缓存行的...参考: 计算机体系结构(第五版)-复习-MESI&MOESI协议 https://www.cnblogs.com/yanlong300/p/8986041.html https://www.cnblogs.com

    44730

    一文解读 CPU 多级缓存 & 缓存一致性协议(MESI)

    CPU 多级缓存 & 缓存一致性协议(MESI)CPU 多级缓存参考:Java Memory Model缓存一致性协议(MESI)多级缓存的出现解决了CPU处理速度和内存读取速度不一致的问题,但是同时也带来缓存不一致的问题...,为了解决这个问题,我们引入了缓存一致性协议,常见的缓存一致性协议有MSI,MESI,MOSI,Synapse,Firefly及DragonProtocol等等,下文以MESI协议进行讲述。...缓存行(Cache line)缓存行是指在缓存中的最小数据单元。四种缓存状态缓存行有4个状态,用2个bit表示。...如果一个处于S状态的缓存失效,另外一个缓存行可能已经独享了该缓存行,但是不会升迁为独享状态,因为失效并不会立即广播给其它缓存行。...MESI 缓存一致性协议中为了尽可能的提高性能,引入了 Store Bufferes & Invalidate Queue ,将数据具体的失效时机和写入时间交给了内存屏障控制,而 JMM 则基于内存屏障保证数据的可见性

    697100

    小议CPU缓存一致性协议MESI

    CPU架构 缓存与主存 解读缓存一致性(Cache Coherency),先看一下CPU的架构 图示一个4核CPU,有三个级别的缓存,分为是L1 Cache(一级缓存)、L2 Cache(二级缓存)、...查询缓存的时候也是由近及远,优先从一级缓存去查找,找到就结束查找,找不到则再去二级缓存查找。二级缓存找不到去三级缓存查找。三级缓存还找不到就去主存(Main Memory)查找。...缓存行大小 好了,既然我们知道了CPU读写缓存的单位是缓存行,那么缓存行的大小是多少呢?...注意,单核CPU上,可能没有L3缓存。比如我在腾讯云买的最低配云主机…… MESI 并发场景下(比如多线程)如果操作相同变量,如何保证每个核中缓存的变量是正确的值,这涉及到一些”缓存一致性“的协议。...其中应用最广的就是MESI协议(当然这并不是唯一的缓存一致性协议)。 状态介绍 在缓存行的元信息中有一个Flag字段,它会表示4种状态,分为对应如下所说的M、E、S、I状态。

    51010

    3 CPU缓存一致性协议MESi

    lock会触发硬件缓存锁定机制, 锁定机制有两种: 总线锁和缓存一致性协议 为什么会有两种锁呢? 这就和cpu的发展有关系了. 早期的cpu技术比较落后, 才使用的总线锁, 来保存缓存的一致性....因此发展出来了缓存一致性协议....现在使用最普遍的是mesi协议, 三. mesi协议的工作原理 四个字母分别代表在缓存里不同的四个状态: M:已修改 E:独占 S:共享 I:已失效 MESI 是4种状态的首字母。...跨缓存行就不是原子的了, 不是原子的, 缓存一致性协议就搞不定了, 缓存一致性协议就升级为总线锁了 ,谁抢到谁赢. 问题2: 既然最终都可以总线锁解决问题, 为什么还要用总线裁决呢?...缓存一致性协议, 不能对寄存器生效. 上面那句话是什么意思呢? ?

    89120

    缓存一致性协议-MESI是什么?

    缓存一致性协议-MESI是什么? MESI是Modify(修改)、Exclusive(独享、互斥)、Shared(共享)、Invalid(无效)首字母组成的。...缓存行必须时刻监听所有试图读该缓存行相对就主存的操作,这种操作必须在缓存将该缓存行写回主存并将状态变成S(共享)状态之前被延迟执行。...缓存行也必须监听其它缓存读主存中该缓存行的操作,一旦有这种操作,该缓存行需要变成S(共享)状态。...缓存行也必须监听其它缓存使该缓存行无效或者独享该缓存行的请求,并将该缓存行变成无效(Invalid)。 I 无效 (Invalid) 该Cache line无效。 无 缓存行是什么?...缓存行(cache line)是缓存存储数据的单位,也是cpu缓存的最小单位。一般大小为64Byte。所以上面的四种状态就是保存在缓存行中,每个状态需要2个Bit位去存储(就是Flag)。

    1.7K20

    JUC并发编程之MESI缓存一致协议详解

    以上图为例,在多核CPU中,每个内核都有自己的缓存,这就引来的一个问题,当缓存的数据与内存中的数据发生不一致的话该怎么办?于是就引来了缓存一致性协议啦。...3 缓存一致性是什么 MESI(Modified-Exclusive-Shared-Invalid)协议是一种广为使用的缓存一致性协议,类似读写锁 对于同一地址的读内存操作是并发的,针对同一地址的写操作是独占的...为了保持数据的一致性,MESI将缓存条目的状态划分为Modified.Exclusive,Shared,Invalid MESI协议中一个缓存条目的状态Flag值分为以下四种 1....以上是针对正常的情况,MESI协议能够正常的对缓存行进行状态标识转换,那么我们来聊一聊针对非正常情况,MESI协议是否还适用呢?...,MESI协议无法同时对线程内的两个缓存行进行lock加锁,这时MESI协议失效,缓存行锁失效,从而晋升到bus总线锁。

    62360
    领券