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

当ETag验证返回304时,浏览器是否会自动从缓存中获取?

当ETag验证返回304时,浏览器会自动从缓存中获取资源。

ETag是HTTP协议中用于标识资源版本的一种机制,它由服务器生成并在响应头中返回给浏览器。当浏览器再次请求该资源时,会将上一次请求返回的ETag值放在请求头中的If-None-Match字段中,发送给服务器进行验证。

如果服务器验证发现资源的ETag值与当前请求中的If-None-Match字段匹配,说明资源没有发生变化,服务器会返回状态码304 Not Modified,告诉浏览器可以直接从缓存中获取资源。

浏览器收到304响应后,会从缓存中加载该资源,并不会重新下载。这样可以减少网络传输,提高页面加载速度和用户体验。

推荐的腾讯云相关产品:腾讯云对象存储(COS)。

腾讯云对象存储(COS)是一种安全、低成本、高可靠的云存储服务,适用于存储和处理任意类型的文件、图片、音视频等海量数据。COS提供了全球部署的存储桶(Bucket)和对象(Object)模型,支持自定义域名、权限管理、数据加密等功能,可以方便地进行文件的上传、下载、管理和分享。

产品介绍链接地址:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从前端角度理解缓存

缓存读取的过程 缓存读取就是浏览器在向服务器请求资源之前,先查询一下本地缓存是否存在需要的资源,如果存在,那便优先从缓存读取。缓存不存在或者过期,再向服务器发送请求。...ETag ETag是对资源的特殊标识 Etag: W/"e563df87b65299122770e0a84ada084f" 请求该资源成功之后,将返回ETag存入if-none-match字段(浏览器自动记录了该字段信息...硬盘的资源被加载时,内存也存储了该资源,当下次改资源被调用时,优先从memory cache读取,加快资源的获取。...加载到的资源缓存到硬盘和内存,下次请求可以快速内存获取到 为什么有的请求状态码返回200,有的返回304 200 from memory cache 不访问服务器,直接读缓存内存读取缓存。...客户端向CDN节点请求数据时,CDN节点判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向源站发出回源请求,源站拉取最新数据,更新本地缓存,并将最新数据返回给客户端

57810

一文彻底搞懂前端缓存机制_2023-03-15

浏览器缓存步骤1)浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接自己的缓存读取资源,不会发请求到服务器。...,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会自己的缓存中去加载这个资源...服务器通过这两个首部字段告知客户端资源的缓存过期时间和缓存最大生命周期。客户端得知资源的缓存过期时间和最大生命周期后,即可自行判断是否可不建立与服务器的链接,直接浏览器缓存获取资源。...缓存未命中时,浏览器就会发送请求到服务器,服务器验证协商缓存是否命中,如果协商缓存命中,请求返回的http状态为304,并会显示说明Not Modified,浏览器收到该返回后,就会从缓存中加载了...,如果没有修改,则命中协商缓存浏览器缓存获取资源;如果有过修改,则服务器返回资源,同时返回新的ETag

62120

Js篇-面试题6-聊一下强缓存与协商缓存

缓存的优点: 减少了不必要的数据传输,节省带宽 减少服务器的负担,提升网站性能 加快了客户端加载网页的速度 用户体验友好 缺点: 资源如果有更改,导致客户端不及时更新就会造成用户获取信息滞后 浏览器去请求某个文件的时候...从上图可以知道,浏览器缓存包括两种类型,即强缓存(本地缓存)和协商缓存,浏览器在第一次请求发生后,再次请求时 浏览器在请求某一资源时,获取该资源缓存的header信息,判断是否命中强缓存(cache-control...header信息来比对结果是否协商缓存命中,若命中,则服务器返回新的响应header信息更新缓存的对应header信息,但是并不返回资源内容,它会告知浏览器可以直接从缓存获取,否则返回最新的资源内容...,还有下面几个比较常用的设置值 no-cache: 不使用本地缓存,需要使用协商缓存,先与服务器确认返回的响应是否被更改,如果之前存在ETag,那么请求的时候会与服务器验证,如果资源未被更改,则可以避免重新下载...能够更加准确的控制缓存,因为ETag时服务器自动生成或由开发者生成对应资源在服务器端的唯一的标识符 Last-Modified 与 ETag 是可以一起使用的,服务器优先验证ETag,一致的情况下,才会继续比对

1.5K10

性能优化第一弹——缓存大探究

分别从过期机制和验证机制两个维度来规定浏览器是否可以直接使用缓存的副本。 过期机制:缓存都有一个有效期,超过有效期,缓存就会失效。...(2)Last-Modified/ETag与Cache-Control/Expires:配置了前者时,浏览器再次访问URI时,重新发送请求到服务器询问文件时候修改,没有则返回304给浏览器,通知浏览器自己自己本地直接获取数据...,修改过则响应整个数据;后者首先检测本地缓存是否在有效期内,在则直接本地缓存获取。...(3)Last-Modified与ETagETag是HTTP1.1出现的,帮助Last-Modified解决了不少麻烦:ETag是由服务器自动生成或开发者生成的对应资源,在服务器端是唯一的标识符,从而更加准确的控制缓存...两者同时出现时,服务器先验证ETag。 下图是浏览器第一次请求和第二次请求的对比图: ?

48820

HTTP缓存机制的Etag、Last-Modified、If-None-Match和If-Modified-Since、Expires和Cache-Control笔记

Etag和If-None-Match:     Etag由服务器端生成,客户端通过If-None-Match这个条件请求来验证资源是否修改。...,如果过期时间还没到,则会去缓存读取该资源,如果已经到期了,则浏览器判断为该资源已经不新鲜要重新服务端获取。...通过这种方式,可以实现直接浏览器缓存读取,而不需要去服务端判断是否已经缓存,避免了这次http请求。值得注意的是Expires时间可能存在客户端时间跟服务端时间不一致的问题。...不应缓存资源的请求并不保证它不会写入磁盘。特别是,HTTP / 1.1定义区分了历史存储和缓存。如果用户导航回上一页,浏览器仍可能显示已存储在历史记录存储的磁盘上的页面。根据规范,这是正确的行为。...再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 字段将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的

1.3K20

一文彻底搞懂前端缓存机制

浏览器缓存步骤1)浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接自己的缓存读取资源,不会发请求到服务器。...,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会自己的缓存中去加载这个资源...服务器通过这两个首部字段告知客户端资源的缓存过期时间和缓存最大生命周期。客户端得知资源的缓存过期时间和最大生命周期后,即可自行判断是否可不建立与服务器的链接,直接浏览器缓存获取资源。...缓存未命中时,浏览器就会发送请求到服务器,服务器验证协商缓存是否命中,如果协商缓存命中,请求返回的http状态为304,并会显示说明Not Modified,浏览器收到该返回后,就会从缓存中加载了...,如果没有修改,则命中协商缓存浏览器缓存获取资源;如果有过修改,则服务器返回资源,同时返回新的ETag

53910

从前端角度理解缓存缓存是怎么回事缓存的类型缓存存储在哪薄荷应用CDN缓存如何合理应用缓存

缓存读取的过程 缓存读取就是浏览器在向服务器请求资源之前,先查询一下本地缓存是否存在需要的资源,如果存在,那便优先从缓存读取。缓存不存在或者过期,再向服务器发送请求。 ?...ETag ETag是对资源的特殊标识 Etag: W/"e563df87b65299122770e0a84ada084f" 请求该资源成功之后,将返回ETag存入if-none-match字段(浏览器自动记录了该字段信息...返回的Request Headers可以看出,再次请求时,浏览器自动发送了If-Modified-Since与If-None-Match两个字段,浏览器根据这两个字段(If-None-Match 优先级大于...硬盘的资源被加载时,内存也存储了该资源,当下次改资源被调用时,优先从memory cache读取,加快资源的获取。...客户端向CDN节点请求数据时,CDN节点判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向源站发出回源请求,源站拉取最新数据,更新本地缓存,并将最新数据返回给客户端

1.1K20

浅谈浏览器缓存

浏览器缓存是将文件保存在客户端,在同一个会话过程中会检查缓存的副本是否足够新,在后退网页时,访问过的资源可以浏览器缓存拿出使用。...一个缓存副本必须满足以下任一条件,浏览器认为它是有效的,足够新的,而直接从缓存获取副本并渲染: 含有完整的过期时间控制头信息(HTTP协议报头),并且仍在有效期内 浏览器已经使用过这个缓存副本,...并且在一个会话已经检查过新鲜度 校验值(验证机制):服务器返回资源的时候有时在控制头信息带上这个资源的实体标签Etag(Entity Tag),它可以用来作为浏览器再次请求过程的校验标识。...Last-Modified与ETag是可以一起使用的,服务器优先验证ETag,一致的情况下,才会继续比对Last-Modified,最后才决定是否返回304。...你可能觉得使用Last-Modified已经足以让浏览器知道本地的缓存副本是否足够新,为什么还需要Etag(实体标识)呢?

1.5K70

【前端词典】输入 URL 到展现涉及哪些缓存环节

协商缓存 ( Last-Modified 和 Etag ) 协商缓存机制下,浏览器需要向服务器去询问缓存的相关信息,进而判断是重新发起请求还是本地获取缓存的资源。...Etag 和 If-None-Match 基于资源校验码(一般为md5值)而验证缓存的过期机制 客户端再次请求该资源的时候,会在其请求头上附带上 If-None-Match 字段(值就是第一次获取请求资源时响应头中返回的...Etag 值),其值与服务器端资源文件的验证码进行对比,如果匹配成功直接返回 304 状态码,浏览器本地缓存取资源文件。...如果不匹配,服务器会把新的验证码放在请求头的 Etag 字段,并且以 200 状态码返回资源。...其实我们第一次获取的资源极有可能是 CDN 节点的缓存获取的,也很有可能是从中间代理服务器(nginx,node 等)的缓存读取的;其中的好处不言而喻。

1.2K70

当我们在谈论HTTP缓存时我们在谈论什么

3.缓存失败阶段(重新请求):服务器发现该资源被修改过,或者在本地没有找到该缓存资源,服务器则返回该资源的数据。 强缓存与弱缓存的区别: 获取资源形式: 都是从缓存获取资源的。...from disk cache),于是去找了一下这两者的区别: memory cache: 将资源存到内存内存获取。...disk cache:将资源缓存到磁盘磁盘获取。 二者最大的区别在于:退出进程时,内存的数据会被清空,而磁盘的数据不会。...If-None-Match也是浏览器发送到服务器验证,文件是否改变的: ?...(Etag触发缓存,Last-Modified不会触发) 2.If-Modified-Since能检查到的粒度是秒级的,修改非常频繁时,Last-Modified触发缓存,而Etag的值不会触发

82430

强制缓存和协商缓存的区别

访问者再次访问同一页面时,浏览器就可以直接本地磁盘加载文档。...03 强制缓存缓存浏览器在请求某一资源时,获取该资源缓存的header信息,判断是否命中强缓存(cache-control和expires信息),若命中直接从缓存获取资源信息,包括缓存header...为了解决这个问题,Windows运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。...需要使用缓存协商,先与服务器确认返回的响应是否被更改,如果之前的响应存在ETag,那么请求的时候会与服务端验证,如果资源未被更改,则可以避免重新下载。...),由服务器根据请求的相关header信息来比对结果是否协商缓存命中;若命中,则服务器返回新的响应header信息(返回304状态码)更新缓存的对应header信息,但是并不返回资源内容,它会告知浏览器可以直接从缓存获取

89520

http缓存协议详细介绍

客户端再次请求相同资源时,先检查是否存在有效的缓存副本。如果存在,则直接从缓存获取资源。2. 缓存策略这里就设计到一个缓存策略的问题,这些问题包括:哪些资源需要加入到缓存,哪些不需要?...客户端再次请求资源时,可以将上次获取资源时服务器返回ETag值发送给服务器,以便服务器判断资源是否发生了变化。...它通常由服务器自动生成,并用于协助缓存控制和验证机制。客户端发送请求时,会将上次获取资源时服务器返回的Date值发送给服务器。这有助于服务器判断客户端请求是否在资源过期之前发出。...如果资源在该时间之后未发生修改,服务器返回304 Not Modified,客户端可以直接从缓存获取资源。 这个字段用于协商缓存机制,通过比较资源的最后修改时间来判断是否需要重新获取资源。...服务器会比较资源的ETag值,如果匹配,则返回304 Not Modified,客户端可以直接从缓存获取资源。如何判断缓存是否有效呢?

26640

一文搞懂浏览器缓存策略

其中,存储策略发生在收到请求响应后,用于决定是否缓存相应资源;过期策略发生在请求前,用于判断缓存是否过期;协商策略发生在请求,用于判断缓存资源是否更新。...浏览器在应用缓存策略时,具体的判断流程如下: ? 上图中的缓存判断流程是浏览器在应用缓存时完整的判断流程。但是在浏览器访问资源的方式不同也导致判断流程的不同。判断流程根据不同方式跳过一些流程。...刷新浏览器,会发现图片缓存获取。 通过启发式缓存的公司可以计算出缓存的时间,修改本地时间超过缓存时间后,再刷新,会发现缓存失效。...2.4.1 If-Modified-Since 返回的资源带有Last-Modified标识时,再次请求该资源,浏览器自动带上If-Modified-Since,值为返回的Last-Modified值...如果服务器判断资源未改变,则返回304,此外由于服务器返回304,资源缓存获取,所以资源大小也减少了,如下所示。 ? ? 修改index.html文件的内容,再次刷新。

1K20

浏览器缓存机制

浏览器向 CDN 节点请求数据时,CDN 节点判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN 节点就会向服务器发出回源请求,服务器拉取最新数据,更新本地缓存...disk cache DiskCache 顾名思义,就是将资源缓存到磁盘,等待下次访问时不需要重新下载资源,而直接磁盘获取,它的直接操作对象为 CurlCacheManager。...协商缓存 缓存没有命中的时候,浏览器会发送一个请求到服务器,服务器根据 header 的部分信息来判断是否命中缓存。如果命中,则返回 304 ,告诉浏览器资源未更新,可使用本地的缓存。...Last-Modified 与 ETag 是可以一起使用的,服务器优先验证 ETag,一致的情况下,才会继续比对 Last-Modified,最后才决定是否返回 304。...我们顺便来验证下三级缓存原理 我们刚进行了网络请求,浏览器把 web.png 存进了磁盘和内存。 根据三级缓存原理,我们先在内存找资源,我们来刷新页面。 ?

1.1K31

浏览器缓存机制剖析

浏览器对于请求资源, 流程如图所示: ? 可以看到浏览器缓存机制分为两个部分: 1、当前缓存是否过期? 2、服务器的文件是否有改动? 第一步:判断当前缓存是否过期 这是判断是否启用缓存的第一步。...max-age=0:告知浏览器,资源已经过期了,你应该(SHOULD)对资源进行重新验证了;在重新获取资源之前,先检验ETag/Last-Modified。...public VS. private 要知道服务器到浏览器之间并非只有浏览器能够对资源进行缓存,服务器的返回可能会经过一些中间(intermediate)服务器甚至甚至专业的中间缓存服务器,还有CDN...这个文件缓存过期,浏览器又向服务器请求这个文件的时候,自动带一个请求头字段If-Modified-Since,其值是上一次传递过来的Last-Modified的值,拿这个值去和服务器现在这个文件的最后修改时间做对比...协商缓存 缓存过期后, 继续请求该资源, 对于现代浏览器, 拥有如下两种做法: 根据上次响应ETag_value, 自动往request header添加If-None-Match字段.

61170

图解 HTTP 缓存

,就是 no-cache ,效果和 Cache-Control 的 no-cache 一致,不使用强缓存,需要与服务器验证缓存是否新鲜,在 3 个头部属性的优先级最高。...的时候,会将这两个属性值到服务端去验证是否命中协商缓存,如果命中了协商缓存返回 304 状态,加载浏览器缓存,并且响应头设置 Last-Modified 或者 ETag 属性。...○ ETag/If-None-Match ETag/If-None-Match 的值是一串 hash 码,代表的是一个资源的标识符,服务端的文件变化的时候,它的 hash码随之改变,通过请求头中的...,才会真正地请求资源,否则返回 304 并加载浏览器缓存。...注:只是为了演示用,实际计算不是通过 MD5 加密的,Apache 默认通过 FileEtag FileEtag INode Mtime Size 的配置自动生成 ETag,用户可以通过自定义的方式来修改文件生成

71820

透过浏览器看HTTP缓存

为了提供查询的性能,将查询后的数据放到内存中进行缓存,下次查询时,直接内存缓存直接返回,提供响应效率。...服务器返回一个响应时,它需要在响应头中提供Cache-Control和ETag。 说到浏览器缓存机制,其实就相当于HTTP协议定义的缓存机制,因为浏览器为我们实现了它。...浏览器在资源过期后再次请求时,浏览器默认会通过If-None-Match传递Etag验证码,通过验证码可以进行高效的资源更新检查:如果资源未更改,则不会传输任何数据。...Etag就主要用来在响应过期之后,验证资源是否被修改。...于是就到了Etag发挥作用的时候了,通常服务器生成并返回Etag验证码,常常是文件内容的哈希值或者某个其他指纹码。

46620

前端缓存那些事

1.强缓存 ❝ 强缓存所谓的“强”,在于强制让浏览器按照一定时间范围内来存储来自服务器的资源,有点强制的味道~,强缓存是利用Expires或者Cache-Control,不发送请求,直接从缓存取,请求状态码返回...比较要内涵,具备更多的属性,其中包括如下 • no-cache :可以在本地缓存,可以在代理服务器缓存,需要先验证才可使用缓存 • no-store : 禁止浏览器缓存,只能通过服务器获取 • max-age...: max-age=0 (需要先验证才可使用缓存,Expires无效) 2.协商缓存 ❝ 协商缓存,就没有强缓存那么霸道,协商缓存需要客户端和服务端两端进行交互,通过服务器告知浏览器缓存是否可用,并增加缓存标识...,意味着资源更新,服务器的响应读取资源并更新Etag浏览器将从缓存读取资源,两者一致时,意味着资源没有更新,服务器返回304状态码,浏览器将从缓存读取资源 //response header...,需要浏览器获取最新的资源,效率最低 一句话:缓存是否过期用:Cache-Control(max-age), Expires,缓存是否有效用:Last-Modified,Etag ❞ 4.缓存的应用

48172

Web浏览器缓存机制

客户端缓存请求过的静态资源(图片,CSS 文件,JS文件等),当用户再次请求相同的url时,浏览器根据缓存规则判断是否使用已经缓 存的静态资源文件,或者绕过资源缓存直接请求服务器重新获取资源。...(b)no-cache:每次发起请求都需要验证缓存资源的新鲜度,新鲜度满足则返回304状态码,使用缓存资源,否则返回200状态码,返回资源主体(c)no-store:不缓存,每次请求需要从服务器重新获取资源...(a) Etag是请求的服务器资源的唯一标识,资源改动则标识更改,从而验证资源是否更新。...接收:读取请求报文 解析:解析请求报文,获取URL和首部信息 查找:查找本地缓存,没有缓存文件则请求服务器或者父类缓存,并缓存 新鲜度检查:验证缓存是否新鲜,需要再验证则需要请求服务器验证缓存新鲜度 创建响应...浏览器将JS脚本资源和图片资源存储在内存缓存,css,xml文件存储的硬盘文件。 浏览器刷新时,js,图片等资源直接内存中加载,css文件需要重用硬盘读取并解析渲染到页面。

1.4K30

亿级流量客户端缓存之Http缓存与本地缓存对比

在讲强制缓存和协商缓存之前,先了解一下Http缓存的过程: 强制缓存 浏览器在请求某一个资源时,获取资源的header信息,判断是否命中强缓存(cache-control和expires信息),若命中...协商缓存 如果没有命中强缓存浏览器会发送请求到服务器,请求携带第一次返回的有关缓存的header字段信息(Last-Modifued/If-Modified-Since和Etag/If-None-Match...若命中,则服务器返回新的响应header信息更新缓存的对应header信息,但是不返回资源内容,它会告知浏览器可以直接从缓存获取;否则返回最新的资源内容。...能够更加准确的控制缓存,因为Etag是服务器自动生成或者由开发者生成的对应资源在服务器端的唯一标识符 Last-Modified与ETag是可以一起使用的,服务器优先验证ETag,一致的情况下,才会继续比对...缓存强制刷新 在强制刷新的时候浏览器就不在发送IF-Modified-Since了,而会带上 from disk cache & from memory cache 可以验证请求是否使用了浏览器缓存是否发送请求给服务器端

1.7K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券