首页
学习
活动
专区
工具
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

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

相关·内容

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

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

79420

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

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

1.6K10
  • 从前端角度理解缓存

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

    60010

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

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

    50320

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

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

    63110

    从前端角度理解缓存缓存是怎么回事缓存的类型缓存存储在哪薄荷应用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.2K20

    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 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的

    2.4K20

    浅谈浏览器缓存

    浏览器缓存是将文件保存在客户端,在同一个会话过程中会检查缓存的副本是否足够新,在后退网页时,访问过的资源可以从浏览器缓存中拿出使用。...一个缓存副本必须满足以下任一条件,浏览器会认为它是有效的,足够新的,而直接从缓存中获取副本并渲染: 含有完整的过期时间控制头信息(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的值不会触发

    84930

    http缓存协议详细介绍

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

    38140

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

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

    98620

    一文搞懂浏览器缓存策略

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

    1.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字段.

    65270

    透过浏览器看HTTP缓存

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

    50820

    图解 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,用户可以通过自定义的方式来修改文件生成

    75620

    Nginx缓存详解(一)之客户端缓存

    客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请求), 它的优势是可以减少网络流量, 加快请求速度。...客户端缓存校验流程图如下: ? 强制缓存 强制缓存原理: 浏览器在加载资源的时候,会先根据本地缓存资源的header中的信息(Expires 和 Cache-Control)来判断缓存是否过期。...协商缓存 协商缓存原理: 当客户端向服务端发起请求时,服务端会检查请求中是否有对应的标识(If-Modified-Since或Etag),如果没有对应的标识,服务器端会返回标识给客户端,客户端下次再次请求的时候...用户行为对浏览器缓存的影响 当按下F5或者刷新时,客户端浏览器会添加请求消息头字段Cache-Control: max-age=0,该请求不进行内容缓存的本地验证,会直接向Web服务器发起请求,服务端根据...当按下Ctrl+F5或者强制刷新时,客户端浏览器会添加请求消息头字段Cache-Control: no-cache,并且忽略所有服务端验证的消息头字段(Etag和Last-Modified),该请求不进行内容缓存的本地验证

    2.2K40

    前端网络高级篇(三)浏览器缓存

    http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资源...我们经常会刷新浏览器,不同的刷新方式对缓存有不同影响: 当ctrl+f5强制刷新网页时,直接从服务器加载,跳过强缓存和协商缓存; 当f5刷新网页时,跳过强缓存,但是会检查协商缓存; 协商缓存并非是一种被强缓存...当浏览器对某个资源的请求命中了强缓存时,返回的http状态为200。在chrome的开发者工具的network里面size会显示为from cache。...状态为200是实实在在从浏览器获取的资源,当http状态为304时该数字是与服务端通信报文的大小,并不是该资源本身的大小,该资源是从本地获取的 - 问题:如何管理强缓存呢?...协商缓存 当浏览器对某个资源的请求没有命中强缓存,就会发一个请求到服务器,验证协商缓存是否命中,如果协商缓存命中,请求响应返回的http状态为304并且会显示一个Not Modified的字符串。

    94010

    前端缓存那些事

    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.缓存的应用

    48972

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券