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

如何知道何时发送304 Not Modified响应

在云计算领域,如何知道何时发送304 Not Modified响应是一个非常重要的问题。304 Not Modified响应表示客户端的缓存副本是最新的,无需重新获取。这可以节省带宽和提高性能。

以下是一些建议,可以帮助您确定何时发送304 Not Modified响应:

  1. 使用ETag标头:ETag是一个实体标记,用于表示资源的状态。每当资源更改时,ETag也会更改。通过比较请求中的If-None-Match标头与服务器上的ETag,您可以确定资源是否已更改。如果ETag相同,则可以发送304 Not Modified响应。
  2. 使用Last-Modified标头:Last-Modified标头表示资源的最后修改时间。通过比较请求中的If-Modified-Since标头与服务器上的Last-Modified时间,您可以确定资源是否已更改。如果资源未更改,则可以发送304 Not Modified响应。
  3. 使用缓存控制标头:使用Cache-Control标头可以指定资源的缓存策略。例如,您可以设置"max-age"指令,以指示资源在缓存中保持有效的时间。如果缓存的副本超过了指定的时间,则应重新获取资源。
  4. 使用版本控制:如果您的资源经常更改,可以考虑使用版本控制。通过在URL中包含版本号,您可以确保客户端获取正确的资源版本。

总之,在云计算领域,确定何时发送304 Not Modified响应是一个重要的性能优化策略。通过使用ETag、Last-Modified、Cache-Control和版本控制等标头,您可以确保客户端获取最新的资源,同时减少不必要的带宽和延迟。

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

相关·内容

在Spring Boot中实现HTTP缓存

在本文中,您将学习如何使用内置的HTTP响应缓存机制来实现缓存SpringBoot控制器的结果。 1.如何以及何时使用HTTP响应缓存? 您可以在应用程序的多个层上进行缓存。...但是无论用例如何,我们可以根据缓存的验证发生在哪里进行缓存管理选项的划分。 2.客户端缓存验证 当您知道请求的资源在给定的时间内不会更改时,服务器可以将此类信息作为响应标头发送到客户端。...如果资源未更改,则服务器不必再次重新发送数据。相反,它使用304 HTTP代码响应,没有任何有效负载。 要公开资源的修改日期,您应该设置Last-Modified标头。...客户端根据Last-Modified标头的值设置其值,该标头是与此特定资源的先前响应一起发送的。...当客户端再次访问资源时,它应该在名为If-None-Match的头中发送其值。如果该值与资源的新计算的ETag匹配,则服务器可以使用空内容和HTTP代码304进行响应

5.2K50
  • http缓存协议详细介绍

    来自服务器的缓存指令服务器可以通过响应头部字段发送缓存指令,以指示客户端如何缓存资源。以下是常见的服务器缓存指令:Cache-Control:这是最常用的服务器缓存指令,用于控制资源的缓存行为。...如果ETag值匹配,服务器可以返回304 Not Modified,客户端可以直接从缓存中获取资源。Date:Date是响应头部字段,表示响应生成的日期和时间。...Last-Modified:Last-Modified响应头部字段,表示资源的最后修改时间。服务器在响应发送该字段,以便客户端在下一次请求时将该值发送回服务器进行协商缓存。...服务器会比较资源的ETag值,如果匹配,则返回304 Not Modified,客户端可以直接从缓存中获取资源。如何判断缓存是否有效呢?...服务器可能会产生两个情况:缓存已经失效 (200)缓存仍然有效(304)5. 缓存标志HTTP协议中使用一些标志来表示资源是否被缓存或如何进行缓存。

    35540

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

    浏览器第一次请求资源时,必须下载所有的资源,然后根据响应的header内容来决定,如何缓存资源。可能采用的是强缓存,也可能是弱缓存。 浏览器后续请求资源时的匹配流程: ?...2.弱缓存阶段:在本地缓存中找到该资源,发送一个http请求到服务器,服务器判断这个资源没有被改动过,则返回304,让浏览器使用该资源。...状态码: 强缓存返回200(from cache),弱缓存返回304状态码 请求(最大区别): 强缓存不发送请求,直接从缓存中取。...选项: 可缓存性: public: 表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存。 private: 只有用户自己的浏览器能够进行缓存,公共的代理服务器不允许缓存。...3.服务器检查该Last-Modified或ETag,并判断出该资源页面自上次客户端请求之后还未被修改,返回响应304和一个空的响应体。

    83930

    HTTP 缓存头部 - 完全指南

    HTTP 规范允许服务器发送多个不同的 Cache-Control 指令,用以控制身处诸如CDN的中间人缓存中,浏览器如何(以及何时)缓存个别的响应: Cache-control: private, max-age...客户端不需要知道该 token 如何产生,只肖在随后的请求中携带之便可。如果 token 相同,也就意味着资源没变,这样一来也就跳过了重新下载。...如果缓存中的资源未发生变化,浏览器将收到一个 `304 Not Modified` 的响应,有效性续期 90 秒。特别是因为不用重新下载资源,带宽和时间都被节省了。...web 开发者如何从重新生效中获益? 浏览器为 web 开发者承担了大多数工作。比如,浏览器自动检测到前一次指定的有效性 token ,将其附加到随后的请求中,并按需基于服务器响应更新缓存的时间戳。...相应的请求头部为 `If-Modified-Since`。 一个 HTTP/1.1 的源服务器应该同时发送 ETag 和 Last-Modified。更多细节可以在 RFC2616 规范中找到。

    1.2K20

    彻底弄懂HTTP缓存机制及原理

    在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送响应的数据块。...浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。...我们知道,在没有缓存数据的时候,浏览器向服务器请求数据时,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应header中。...,则响应HTTP 304,告知浏览器继续使用所保存的cache。...对于比较缓存,将缓存信息中的Etag和Last-Modified通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。 浏览器第一次请求: ? 浏览器再次请求时: ?

    44130

    彻底弄懂HTTP缓存机制及原理

    浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。...我们知道,在没有缓存数据的时候,浏览器向服务器请求数据时,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应header中。...再次请求数据时,客户端将备份的缓存标识发送给服务器,服务器根据缓存标识进行判断,判断成功后,返回304状态码,通知客户端比较成功,可以使用缓存数据。 第一次访问: ?...,则响应HTTP 304,告知浏览器继续使用所保存的cache。...对于比较缓存,将缓存信息中的Etag和Last-Modified通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。 浏览器第一次请求: ?

    85810

    干货 | 彻底弄懂 HTTP 缓存机制及原理

    在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送响应的数据块。...浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。...我们知道,在没有缓存数据的时候,浏览器向服务器请求数据时,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应header中。...,则响应HTTP 304,告知浏览器继续使用所保存的cache。...对于比较缓存,将缓存信息中的Etag和Last-Modified通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。 浏览器第一次请求: ? 浏览器再次请求时: ?

    53030

    你清楚HTTP缓存机制和原理吗?

    在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送响应的数据块。...浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。...我们知道,在没有缓存数据的时候,浏览器向服务器请求数据时,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应header中。...,则响应HTTP 304,告知浏览器继续使用所保存的cache。...对于比较缓存,将缓存信息中的Etag和Last-Modified通过请求发送给服务器,由服务器校验,返回304状态码时,浏览器直接使用缓存。 浏览器第一次请求: ? 浏览器再次请求时: ?

    77720

    架构高性能网站秘笈(三)——浏览器缓存

    如果响应头中包含了页面的过期时间,那么当用户请求相同的页面时,浏览器会询问服务器是否可以使用缓存页面,若服务器同意使用缓存,则返回304状态码;若服务器不同意,则将新的页面返回给浏览器,并携带200状态码...此外,如果响应头中未包含启用浏览器缓存属性的话,浏览器仍然会缓存当前页,但下次请求相同页面时浏览器会直接向服务器请求新的页面,而不会询问是否使用缓存页面。 如何实现浏览器缓存?...1. last-modified 如果服务器向浏览器返回的响应头中包含last-modified属性,那么浏览器会将该属性与页面一起存入本地缓存。...当用户请求相同的页面时,浏览器发送的请求头中会携带属性: If-Modified-Since:XXXXX 服务器会根据该值判断是否可以使用缓存页面,若可以使用缓存,则返回304状态码,若不可以使用缓存,...若服务器的响应头中包含了ETag属性,那么浏览器会将页面和ETage属性值一起缓存;当用户请求相同的页面时,浏览器会读区缓存的ETag值,并作为请求头的If-None-Match:”xxxxx”属性发送给服务器

    64880

    浏览器缓存机制浅析

    如果没听说过浏览器缓存或者不知道浏览器缓存的用处,可以先浏览一下这篇文章->Web缓存的作用与类型 。   那么浏览器缓存机制到底是如何工作的呢?...每次用户请求该资源时,都会向服务器发送一个请求,每次都会下载完整的响应。...的检验直接去向服务器发送请求(下文再探讨各种刷新后如何读取缓存),我们看看请求截图:   请求头中包含了If-Modified-Since项,而它的值和上次请求响应头中的Last-Modified一致...将If-Modified-Since的日期和服务端该文件的最后修改日期对比,如果相同,则响应HTTP304,从缓存读数据;如果不相同文件更新了,HTTP200,返回数据,同时通过响应头更新last-Modified...或许你会发送该请求也有If-Modified-Since项,如果两者同时存在,If-None-Match优先,忽略If-Modified-Since。或许你会问为什么它优先?

    50110

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

    和资源在服务器上的最后修改时间判断资源是否有变化,如果没有变化则返回 304 Not Modified,但是不会返回资源内容,如果有变化,就正常返回资源内容,当服务器返回 304 Not Modified...的响应时,response header 中不会再添加 Last-Modified的header,因为既然资源没有变化,那么Last-Modified也就不会改变,这是服务器返回304 的 response...header 浏览器收到 304响应后,就会从缓存中加载资源 如果协商缓存没有命中,浏览器直接从服务器加载资源时,Last-Modified 的 Header在重新加载的时候会被更新,下次请求时,...其判断过程与Last-Modified/If-Modified-Since类似,与Last-Modified不一样的是,当服务器返回304 Not Modified响应时,由于ETag重新生成过,response...header中还会把这个ETag返回,即使这个ETag跟之前没有变化 既有Last-Modified又为何有ETag 使用Last-Modified已经足以让浏览器知道本地的缓存副本是否足够新,那为什么还需要

    1.6K10

    浏览器缓存机制浅析

    如果没听说过浏览器缓存或者不知道浏览器缓存的用处,可以先浏览一下这篇文章->Web缓存的作用与类型 。 那么浏览器缓存机制到底是如何工作的呢?...然后我在主页按下ctrl+r刷新,因为ctrl+r会默认跳过max-age和Expires的检验直接去向服务器发送请求(下文再探讨各种刷新后如何读取缓存),我们看看请求截图: ?...将If-Modified-Since的日期和服务端该文件的 最后修改日期对比,如果相同,则响应HTTP304,从缓存读数据;如果不相同文件更新了,HTTP200,返回数据,同时通过响应头更新last-...或许你会发送该请求也有If-Modified- Since项,如果两者同时存在,If-None-Match优先,忽略If-Modified-Since。或许你会问为什么它优先?...life, 有个jquery的请求,如果直接在地址栏按回车,响应HTTP200(from cache),因为有效期还没过直接读取的缓存;如果ctrl+r进行刷新,则会相应HTTP304(Not Modified

    84940

    CDN缓存的理解

    缓存控制 在计算机中有两大难题,一是缓存何时失效,二是如何命名,而CDN中缓存何时失效是一个比较麻烦的问题,假如源站的资源文件发生变化,而用户此时取得的资源是从缓存节点中取得的,此时就会造成资源文件不一致的现象...简单来说,就是浏览器会将服务端响应的资源进行缓存,但是在每次请求时,缓存都要向服务端评估缓存响应的有效性,协商缓存是否可用,根据响应304还是200判断是使用本地缓存资源还是使用服务器响应的资源。...协商缓存 当浏览器对某个资源的请求没有命中强缓存,就会发一个请求到服务器,验证协商缓存是否命中,如果协商缓存命中,请求响应返回的HTTP状态为304 (Not Modified),该请求不携带实体数据,...,浏览器会在请求头加上If-Modified-Since即上次响应的Last-Modified的值,询问服务器在该日期后资源是否有更新,有更新的话就会将新的资源发送回来,但是如果在本地打开缓存文件,就会造成...,询问该资源的Etag是否有更新,有变动就会发送新的资源回来。

    2.9K41

    HTTP缓存控制小结

    S:靠,你知道还问我?(304) ================================= C:小服 ,你几岁了?我猜你18岁了。 S:小客 ,我19岁了。...一个304响应比一个静态资源通常小得多,这样就节省了网络带宽。...头部,浏览器会使用If-Modified-Since头部信息重新发送该时间以确认资源是否需要重新发送。...实际上Server没有修改这个index.css文件,所以返回了一个304(Not Modified),这样的响应信息很小,所消耗的route-trip不多,网页很快就刷新了。...通过这样的处理,增长了静态资源,特别是图片资源的缓存时间,避免该资源很快过期,客户端频繁向服务端发起资源请求,服务器再返回304响应的情况(有Last-Modified/Etag)。

    36720

    HTTP 缓存控制总结

    S:靠,你知道还问我?(304)=================================C:小服 ,你几岁了?我猜你18岁了。 S:小客 ,我19岁了。...其中Cache-Control是Chrome强制加上的,而If-Modified-Since是因为获取该资源的时候包含了Last-Modified头部,浏览器会使用If-Modified-Since头部信息重新发送该时间以确认资源是否需要重新发送...实际上Server没有修改这个index.css文件,所以返回了一个304(Not Modified),这样的响应信息很小,所消耗的route-trip不多,网页很快就刷新了。 ?...通过这样的处理,增长了静态资源,特别是图片资源的缓存时间,避免该资源很快过期,客户端频繁向服务端发起资源请求,服务器再返回304响应的情况(有Last-Modified/Etag)。...对于所有可缓存资源,需要指定一个Expires或Cache-Control,同时指定Last-Modified或者Etag。 可以通过标识文件版本名、加长缓存时间的方式来减少304响应

    62931

    彻底解决SESSION过期异常:一文讲透Http的缓存机制

    那么浏览器第一次向服务器发起该请求后拿到请求结果,会根据响应报文中 HTTP 头的缓存标识,决定是否缓存结果,则将请求结果和缓存标识存入浏览器缓存中,简单的过程如下图: 由上图我们可以知道: 浏览器每次发起请求...接下来,我们直接看一个例子,如下: 由上面的例子我们可以知道: HTTP 响应报文中 expires 的时间值,是一个绝对值。...了解强制缓存的过程后,我们拓展性的思考一下:浏览器的缓存存放在哪里,如何在浏览器中判断强制缓存是否生效?...Last-Modified / If-Modified-Since Last-Modified 是该资源文件在服务器最后被修改的时间,会在服务器响应请求时返回,如下: If-Modified-Since...如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码 304状态码或许不应该认为是一种错误,而是对客户端有缓存情况下服务端的一种响应

    2.2K30

    【Http原理】请问 HTTP 是怎么进行缓存的?

    ,If-Unmodified-Since 主要也是为了判断资源是否更新过 两个首部的值都是是上次响应收到的 Last-Modified 的值 If-Modified-Since If-Modified-Since...强缓存 一旦命中强缓存,浏览器就不会发送请求,而是直接读取缓存。...是否改变 1、浏览器把上次响应的 Last-Modified,填入这次请求的 If-Modified-Since 2、服务器收到请求,拿 If-Modified-Since 和 服务器资源的 Last-Modified...当客户端缓存了目标资源,但是不确定是否是最近的版本,会发一个条件请求,附带上 条件首部 服务器拿到首部,判断出客户端的资源是否是最新的 如果是最新的,返回304,但是没有响应体,客户端收到304...,就会从缓存中读取对应的值 如果不是最新的,返回200,返回最新的内容,客户端使用新的响应体 覆盖 旧的响应体 可以节省网页的打开时间,有机会省去整个响应体的发送 条件请求的触发条件 资源在客户端过期

    54220

    浏览器缓存机制剖析

    如何判断缓存的过期以及文件的变动? 浏览器拥有一系列成熟的缓存策略....值, 若与请求资源当前的Last-Modified值相同, 那么将返回304状态码的响应, 反之, 将返回200状态码响应....对于 GET 或 HEAD 请求, 如果其etags列表均不匹配, 服务器将返回200状态码的响应, 反之, 将返回304(Not Modified)状态码的响应....服务器收到请求后, 拿If-Modified-Since字段的值与资源的Last-Modified值进行比较, 若相同, 则命中协商缓存, 返回304响应....浏览器 前提 操作 表现 正常表现 IE8 资源内容没有修改 新开一个窗口加载网页 浏览器重新发送请求(返回200) 重新发送请求(返回304) IE8 资源内容已修改 原浏览器窗口中单击 Enter

    62370
    领券