千家信息网

Nginx客户端缓存的原理是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Nginx客户端缓存的原理是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Nginx客户端缓存的原理是什么"吧!缓存的作用缓存对于W
千家信息网最后更新 2026年11月01日Nginx客户端缓存的原理是什么

本篇内容主要讲解"Nginx客户端缓存的原理是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Nginx客户端缓存的原理是什么"吧!

缓存的作用

缓存对于Web服务至关重要,尤其对于大型高负载Web站点。缓存作为性能优化的一个重要手段,可以在极大程度上减轻后端服务器的负载。通常对于静态资源,即不经常更新的资源,如图片,CSS或JS等进行缓存,而不用每次都向服务器请求,这样就可以减轻服务器的压力。

缓存的分类

缓存可以分为客户端缓存和服务端缓存。

  • 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请求), 它的优势是可以减少网络流量, 加快请求速度。

  • 服务端缓存指的是反向代理服务器或CDN的缓存, 他的作用是用于减轻后端实际的Web Server的压力。

浏览器缓存可以分为两种模式,强缓存和协商缓存。

  • 强缓存(无HTTP请求,无需协商)

    直接读取本地缓存,无需向服务端发送请求确认,HTTP返回状态码是200(from memory cache或者from disk cache ,不同浏览器返回的信息不一致的)。

    相关的HTTP Header有:

    • Cache-Control

    • Expires

  • 协商缓存(有HTTP请求,需协商)

    浏览器虽然发现了本地有该资源的缓存,但是缓存已经过期,于是向服务器询问缓存内容是否还可以使用,若服务器认为浏览器的缓存内容还可用,那么便会返回304(Not Modified)HTTP状态码,告诉浏览器读取本地缓存;如果服务器认为浏览器的缓存内容已经改变,则返回新的请求的资源。

    相关的HTTP Header有:

    • Last-Modified

    • ETag

缓存校验流程

由于网站内容的经常变化,为了保持缓存的内容与网站服务器的内容一致,客户端会通过内容缓存的有效期(强制缓存)以及Web服务器提供的访问请求的校验(协商缓存),快速判断请求的内容是否已经更新。客户端缓存校验流程图如下:

强制缓存

强制缓存原理: 浏览器在加载资源的时候,会先根据本地缓存资源的header中的信息(Expires 和 Cache-Control)来判断缓存是否过期。如果缓存没有过期,则会直接使用缓存中的资源;否则,会向服务端发起协商缓存的请求。

客户端判断缓存是否过期和先前请求时服务端返回的HTTP消息头字段有关:

服务端返回字段作用
Cache-Control: max-age=x客户端缓存时间超出x秒后则缓存过期。
Cache-Control: no-cache客户端不能直接使用本地缓存的响应,需要进行协商缓存,发送请求到服务器确认是否可以使用缓存。如果Web服务器返回304,则客户端使用本地缓存,如果返回200,则使用Web服务器返回的新的数据。
Cache-Control: no-store客户端不能对响应进行缓存。
Cache-Control: public可以被所有的用户缓存,包括终端用户和 CDN 等中间代理服务器。
Cache-Control:private只能被终端用户的浏览器缓存,不允许 CDN 等中继缓存服务器对其缓存。
expires x客户端缓存时间超出x秒后则缓存过期,优先级比Cache-Control: max-age=x低。

协商缓存

协商缓存原理: 当客户端向服务端发起请求时,服务端会检查请求中是否有对应的标识(If-Modified-Since或Etag),如果没有对应的标识,服务器端会返回标识给客户端,客户端下次再次请求的时候,把该标识带过去,然后服务器端会验证该标识,如果验证通过了,则会响应304,告诉浏览器读取缓存。如果标识没有通过,则返回请求的资源。

Last-Modified与If-Modified-Since属于HTTP/1.0,是用于服务端对响应数据修改时间进行校验的服务端校验方法。Last-Modified的值是由服务端生成后传递给客户端的,客户端发送请求时,会将本地内容缓存中的Last-Modified的值由请求消息头的If-Modified-Since字段传递给服务端,如果服务端的被请求的内容的最后修改时间和If-Modified-Since的(默认是exact精确匹配)值不一致,则将返回新的内容,否则返回响应状态码304,客户端将使用本地缓存。

Etag与If-None-Match属于HTTP/1.1,优先级高于Last-Modified的验证,是用于服务端对响应数据进行实体标签校验的服务端校验方法。Etag类似于身份指纹,是一个可以与Web资源关联的记号。当客户端第一次发起请求时,Etag的值在响应头中传递给客户端;当客户端再次发起请求时,如果验证完本地内容缓存后需要发起服务端验证,Etag的值将由请求消息头的If-None-Match字段传递给服务端。如果服务端验证If-None-Match的值与服务端的Etag值不匹配,则认为请求的内容已经更新,服务端将会返回新的内容,否则返回响应状态码304,客户端将使用本地缓存。

下图可以看到客户端第一次请求时,客户端请求中没有If-Modified-Since和Etag标识,服务端响应了200,并且返回了Etag和Last-Modified消息头。

当第二次客户端请求时,带上了If-Modified-Since和If-None-Match消息头,并且服务端经过校验后返回了304让客户端使用本地缓存。

用户行为对浏览器缓存的影响

当按下F5或者刷新时,客户端浏览器会添加请求消息头字段Cache-Control: max-age=0,该请求不进行内容缓存的本地验证,会直接向Web服务器发起请求,服务端根据If-Modified-Since或者If-None-Match的值进行验证。

当按下Ctrl+F5或者强制刷新时,客户端浏览器会添加请求消息头字段Cache-Control: no-cache,并且忽略所有服务端验证的消息头字段(Etag和Last-Modified),该请求不进行内容缓存的本地验证,它会直接向Web服务器发起请求,因为请求中没有携带服务端验证的消息头字段,服务端会直接返回新的内容。

Cache-Control字段在请求和响应中的含义

客户端请求

  • max-age:不想要在代理服务器中缓存了太长时间(>max-age seconds)的资源。

  • max-stale:可以接收代理服务器上的过期缓存。若max-stable后没有值,则表示无论过期多久客户端都可以使用。

  • min-fresh:要求服务器使用其缓存时,至少保证在min-fresh秒内不会过期。

  • no-cache:告诉代理服务器,不能直接使用已有缓存作为响应返回,除非带着缓存条件到上游服务端得到 304 验证返回码才可使用现有缓存。

  • no-store:告诉各代理服务器不得缓存这个请求及其相应。

  • no-transform: 告诉代理服务器不要修改消息包体的内容。

  • only-if-cached:告诉代理服务器仅能返回缓存,没有缓存的话就返回 504。

服务端响应

  • max-age:告诉客户端缓存 Age 超出 max-age 秒后则缓存过期。

  • s-maxage:与max-age相似,但仅针对共享缓存,且优先级高于max-age和Expires。

  • public:可以被所有的用户缓存,包括终端用户和 CDN 等中间代理服务器。

  • private: 只能被终端用户的浏览器缓存,不允许 CDN 等中继缓存服务器对其缓存。

  • no-store:告诉所有下游节点不能对响应进行缓存。

  • no-cache: 告诉客户端不能直接使用缓存的响应,使用前必须在源服务器验证得到304返回码。

  • no-transform:告诉代理服务器不能修改消息包体的内容。

  • must-revalidate:告诉客户端一旦缓存过期,必须向服务器验证后才可使用。

  • proxy-revalidate:与 must-revalidate 类似,但它仅对代理服务器的共享缓存有效。

到此,相信大家对"Nginx客户端缓存的原理是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

缓存 服务 客户 客户端 服务器 内容 浏览器 浏览 验证 消息 代理 资源 协商 字段 标识 用户 原理 时间 状态 终端 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 科技类互联网 互联网医疗科技 华宇互联网科技 唐信互联网科技 火传媒上海互联网科技 厦门比较好的科技互联网公司 湖北码尼互联网科技有限公司电话 武汉健翔互联网络科技有限公司 电子科技大学互联网创业大赛 国大互联网教育科技有限公司工作 互联网公司黑科技创始人 互联网方面的科技前沿 互联网科技实习生岗位 互联网科技资金流入 九思连强互联网电子科技有限公司 长沙渺峰互联网科技有限公司 好易买互联网科技 科技互联网公司两年变化 上海旺乐尼互联网科技有限公司 互联网科技公司怎么样 科技赋能互联网健康 顶级互联网科技成果有哪些 重庆威客帮互联网科技 互联网金融中的现代科技 互联网新科技动漫ppt素材 陕西云淼互联网科技公司 上海旺乐尼互联网科技有限公司 科技互联网企业在行动 中国主要互联网科技公司
0