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

ETag vs Header Expires

在云计算领域,ETag和Header Expires是两种常见的缓存策略,它们可以帮助提高网站性能并减轻服务器负担。

ETag是一种实体标签,它是一个唯一的字符串,用于表示请求的资源的状态。当浏览器发送请求时,服务器会将ETag与请求的资源进行比较,如果ETag相同,则表示资源未更改,浏览器可以使用本地缓存的版本。如果ETag不同,则表示资源已更改,浏览器需要重新请求资源。

Header Expires是一种过期时间标头,它指定了资源的缓存到期时间。当浏览器发送请求时,服务器会将Header Expires与请求的资源进行比较,如果请求的资源尚未过期,则浏览器可以使用本地缓存的版本。如果请求的资源已过期,则浏览器需要重新请求资源。

ETag和Header Expires都是有效的缓存策略,但它们的应用场景和优势不同。ETag更适用于需要精确控制缓存的情况,例如静态资源和数据文件。而Header Expires则更适用于需要简单的缓存策略的情况,例如静态网页和图片。

推荐的腾讯云相关产品和产品介绍链接地址:

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

相关·内容

HTTP缓存(Cache-Control、ExpiresETag

Expires Expires 是以前用来控制缓存的http头,Cache-Control是新版的API。 现在首选 Cache-Control。...响应头设置方式: Expires: Wed, 21 Oct 2015 07:28:00 GMT Expires 响应头包含日期/时间, 即在此时候之后,响应过期。...注意: 因为过期标准的时间用的是本地时间,所以不靠谱,所以要游侠使用Cache-Control代替Expires 区别 Cache-Control设置时间长度 Expires 设置时间点 详细:Expires...可见返回至完全改变了 这个特性可以用来判断两次信息传输是否完整一致 ETag 例子: 例如我们请求一个js文件。 设置一个ETag响应头 ?...HTTP 304 没有响应体,因为不需要下载响应内容,直接用缓存就行了 ETag与 Cache-Control的区别 假设我们请求两个文件,CSS文件使用Cache-Control缓存,js文件使用ETag

5.1K50

负载均衡环境中和如何设置ExpiresEtag

在负载均衡环境中(LVS, LoadBalance)为了减少浏览器数据的重复请求操作,一般需要设置 Http Header 的 Etage 和 Expires 告诉浏览器请求数据是否已过期。...以下内容主要考虑Apache+squid 环境 ETag Header是文件修改时间、文件大小和inode号生成的校验(checksum),在多台服务器的负载均衡环境下会因部署内容的inode节点差异造成...ETag 的不同,在多台WEB前端做负载均衡的情况下,会因为请求同一个数据但不同机器的 ETag 而影响了响应....具体表现为用户在第一次请求某一内容时下载而再次时浏览器会发现ETag不同而再次请求下载.。...header(‘Last-Modified: ‘ . gmdate(“D, d M Y H:i:s”) . ‘ GMT’); header(‘Expires: ‘ . gmdate (“D, d

85920

浏览器缓存 Last-Modified Etag Expires Cache-Control 详解

HTTP Cache Headers 当服务器发出响应的时候,可以通过两种方式来告诉客户端(浏览器)如何处理缓存: 第一种是 Expires,比如: Expires: Thu, 10 Dec 2015...23:21:37 GMT 在此日期之前,客户端都会认为缓存是有效的,第二次请求,浏览器不会连接服务器,直接从本地缓存中读取,比如下图: 不过 Expires 有缺点,比如说,服务端和客户端的时间设置可能不同...但是 Cache-Control 是 HTTP1.1 才有的,不适用与 HTTP1.0,而 Expires 既适用于 HTTP1.0,也适用于 HTTP1.1,所以说在大多数情况下同时发送这两个头会是一个更好的选择...ETag / If-None-Match HTTP 协议规格说明定义 ETag 为“被请求变量的实体值”。...因为服务器首先产生 Last-Modified/Etag 标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其缓存是否过期。

87630

Web 性能优化-缓存-HTTP 缓存

(1) 强缓存:浏览器在加载资源的时候,根据资源的 HTTP Header 判断它是否命中强缓存,如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。...(2) HTTP 协议缓存:通过在 HTTP 协议头里面定义一些字段来告诉浏览器当前资源是否缓存,比如 Cache-Control, Expires, Last-Modified, Etag 等。...(2) Expires:设置资源过期时间,Expires 的值对应一个 GMT(格林尼治时间) 来告诉浏览器资源什么时间过期。...web 服务器收到请求后发现 Header 中有 If-Modified-Since 则与被请求资源的最后修改时间进行比对。...Last-Modified vs Etag Etag 可以解决 Last-Modified 存在的一些问题: 某些服务器不能精确得到资源的最后修改时间,这样就无法通过最后修改时间判断资源是否更新。

47330

网络篇—浏览器缓存(一)

,协商缓存会发请求; 二、和缓存有关的header 强缓存 Expires:response header里的过期时间(绝对时间),浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存。...Expires和Cache-Control的异同: Expires 是http1.0的产物,设置的是绝对日期时间; Cache-Control是http1.1的产物,设置max-age设置的是相对时间...; 两者同时存在的话,Cache-Control优先级高于Expires 协商缓存 ETag和If-None-Match Etag是上一次加载资源时,服务器返回的response header,是对该资源的一种唯一标识...,只要资源有变化,Etag就会重新生成; 浏览器在下一次加载资源向服务器发送请求时,会将上一次返回的Etag值放到request header里的If-None-Match里,服务器接受到If-None-Match...如果时间过期,则向服务器发送header带有If-None-Match和If-Modified-Since 的请求; 服务器收到请求后,优先根据Etag的值判断被请求的文件有没有做修改,Etag值一致则没有修改

67020

浏览器缓存机制小结

,协商缓存会发请求 缓存有关的header 强缓存 Expires:response header里的过期时间,浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存。...所以Expires其实是过时的产物,现阶段它的存在只是一种兼容性的写法 协商缓存 ETag和 If-None-Match:这两个要一起说。...Etag是上一次加载资源时,服务器返回的response header,是对该资源的一种唯一标识,只要资源有变化,Etag就会重新生成。...浏览器在下一次加载资源向服务器发送请求时,会将上一次返回的Etag值放到request header里的If-None-Match里,服务器接受到If-None-Match的值后,会拿来跟该资源文件的Etag...response header ? request header ? ETag和Last-Modified的作用和用法也是差不多,说一说他们的区别。

46880

图解浏览器缓存

· 浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在response的header会加上Expires/Cache-Control的header; ·  浏览器再请求这个资源时,先从缓存中寻找...,找到这个资源后,比较Expires或Cache-Control的max-age字段值做比较, 如果在有效期内,则读取缓存内容;若缓存已过期,则重新向服务器发送请求; ·  header在重新加载的时候会被更新...Etag、If-None-Match · 浏览器第一次向服务器请求一个资源,服务器在返回这个资源的同时,在respone的header加上ETag字段; ·浏览器再次跟服务器请求这个资源时,在request...的header上加上If-None-Match,这个值就是上一次请求时返回的ETag的值; ·服务器再次收到资源请求时,再根据资源生成一个新的ETag,与浏览器传过来If-None-Match比较,如果这两个值相同...与Last-Modified不一样的是,当服务器返回304 Not Modified的响应时,由于ETag重新生成过,response header中还会把这个ETag返回,即使这个ETag跟之前的没有变化

4.2K476

前端缓存那些事

第一回合 Last-Modified: Wed, 21 Oct 2019 07:28:00 GMT //request header 第二回合 If-Modified-Since: Wed, 21...Etag是由服务端生成的,然后浏览器会将Etag与资源缓存 • 第二回合: 浏览器会将 Etag 放入 If-None-Match 请求头中去访问服务器,服务器收到后,会对比两端的标识,当两者不一致时...,意味着资源更新,会从服务器的响应读取资源并更新Etag,浏览器将从缓存中读取资源,当两者一致时,意味着资源没有更新,服务器会返回304状态码,浏览器将从缓存中读取资源 //response header...第一回合 ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4" //request header 第二回合 If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4...,需要浏览器去获取最新的资源,效率最低 一句话:缓存是否过期用:Cache-Control(max-age), Expires,缓存是否有效用:Last-Modified,Etag ❞ 4.缓存的应用

47172

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

比如下图 因为响应报文的响应头中的Expires字段会告诉客户端这个资源的过期时间,在过期之前可以继续使用。...Expires和Cache-Control: Expires: 这个字段是HTTP/1.0中的,Expires是需要在服务端配置(具体配置也根据服务器而定),Expires添加的是该资源过期的日期,浏览器会根据该过期日期与客户端时间对比...值得注意的是Expires时间可能存在客户端时间跟服务端时间不一致的问题。所以,建议Expires结合Cache-Control一起使用,大型网站中一起使用的情况比较多见。...可以通过将Expires HTTP版本1.0标头字段值设置为早于响应时间的时间来进行模拟。Cache-Control相对于Expires更加具体,细致。...若同时设置了Cache-Control和Expires,Cache-Control的优先级高于Expires

1.1K20

前端缓存那些事

第一回合 Last-Modified: Wed, 21 Oct 2019 07:28:00 GMT //request header 第二回合 If-Modified-Since: Wed, 21...Etag是由服务端生成的,然后浏览器会将Etag与资源缓存 • 第二回合: 浏览器会将 Etag 放入 If-None-Match 请求头中去访问服务器,服务器收到后,会对比两端的标识,当两者不一致时...,意味着资源更新,会从服务器的响应读取资源并更新Etag,浏览器将从缓存中读取资源,当两者一致时,意味着资源没有更新,服务器会返回304状态码,浏览器将从缓存中读取资源 //response header...第一回合 ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4" //request header 第二回合 If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4...,效率最低 一句话:缓存是否过期用:Cache-Control(max-age), Expires,缓存是否有效用:Last-Modified,Etag 4.缓存的应用 讲述缓存在我们开发中最常见的使用

76040

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

)和expires信息,若命中,直接从缓存中获取资源信息,包括缓存header信息,本次请求根本就不会与服务器进行通信 请求头信息 * Accept: "" * Accept-Encoding: gzip.../If-Modified-Since和Etag/If-None-Match),由服务器根据请求中的相关header信息来比对结果是否协商缓存命中,若命中,则服务器返回新的响应header信息更新缓存中的对应...304 强缓存相关的header字段 强缓存是直接从缓存中获取资源而不经过服务器,与强缓存相关的header字段有两个 expires:这是http1.0的规范,它的值为一个绝对时间的 GMT 格式的时间字符串...同时存在的话,cache-control的优先级高于expires 协商缓存相关的 header 字段 协商缓存都是由服务器来确定缓存资源是否可用的,所以客户端与服务器端需要某种标识来进行通信,从而让服务器判断请求资源是否可以缓存访问.../If-Modified-Since类似,与Last-Modified不一样的是,当服务器返回304 Not Modified的响应时,由于ETag重新生成过,response header中还会把这个

1.5K10

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

03 强制缓存 强缓存:浏览器在请求某一资源时,会先获取该资源缓存的header信息,判断是否命中强缓存(cache-control和expires信息),若命中直接从缓存中获取资源信息,包括缓存header...Cache-Control: must-revalidate 注意:如果cache-control与expires同时存在的话,cache-control的优先级高于expires 04 协商缓存...如果没有命中强缓存,浏览器会发送请求到服务器,请求会携带第一次请求返回的有关缓存的header字段信息(Last-Modified/If-Modified-Since和Etag/If-None-Match...重新生成过,response header中还会把这个ETag返回,即使这个ETag跟之前的没有变化。...HTTP响应头中不包含Last-Modified/Etag,也不包含Cache-Control/Expires的请求无法被缓存 ---- 苟有恒 , 何必三更眠五更起

86520

浏览器缓存知识点

Expires Expires是http1.0提出的一个表示资源过期时间的header,它描述的是一个绝对时间,由服务器返回,Expires 头部字段提供一个日期和时间,响应在该日期和时间后被认为失效。...这两个header可以只启用一个,也可以同时启用,当response header中,Expires和Cache-Control同时存在时,Cache-Control优先级高于Expires。...1)浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在respone的header加上ETagheader,这个header是服务器根据当前请求的资源生成的一个唯一标识,这个唯一标识是一个字符串...的header,这个header的值就是上一次请求时返回的ETag的值 3)服务器再次收到资源请求时,根据浏览器传过来If-None-Match和然后再根据资源生成一个新的ETag,如果这两个值相同就说明资源没有变化...与Last-Modified不一样的是,当服务器返回304 Not Modified的响应时,由于ETag重新生成过,response header中还会把这个ETag返回,即使这个ETag跟之前的没有变化

25920

http请求头中缓存的实现

里面的If-modified-Since,如果最后修改时间相同则返回304,否则给返回头(response header)添加last-Modified并且返回数据(response body)。...('sha1'))生成的内容摘要字符对比,相同则直接返回304,否则给返回头(response header)添加etag属性为当前的内容摘要字符,并且返回内容。...通过HTTP响应头控制,也就是我们在上面说到的catche-control和expires Expires设置的过期时间是一个绝对的GMT时间,例如:Expires:Thu,20 Jun 2019...因为http1.1>http1.0,所以Cache-Control>ExpiresETag>Last-Modified。...依照就近原则,先找本地缓存,没有再向服务器发请求,所以Expires>Last-Modified,Cache-Control>ETag, 如果浏览器只支持http1.0,那么浏览器只会携带Last-Modified

1.8K30

掌握缓存,不再让你蓝瘦香菇 —— 祝各位程序员节日快乐!

2 Web缓存的类型 3 浏览器缓存的基本知识 3.1 Expires 3.2 Last-modified 3.3 Cache-Control 3.4 ETag 4 浏览器缓存机制 4.1 强缓存应用...3 浏览器缓存的基本知识 浏览器的缓存状态是由HTTP header决定的,header的参数有四种:Expires、Last-modified、Cache-Control、ETag; 3.1 Expires...所以就有了另外一对header来管理协商缓存,这对header就是ETag和If-None-Match。...的header,这个header的值就是上一次请求时返回的ETag的值; 3 服务器再次收到资源请求时,根据浏览器传过来If-None-Match和然后再根据资源生成一个新的ETag,如果这两个值相同就说明资源没有变化...与Last-Modified不一样的是,当服务器返回304 Not Modified的响应时,由于ETag重新生成过,response header中还会把这个ETag返回,即使这个ETag跟之前的没有变化

63660
领券