当前位置:   article > 正文

Java教程之多级缓存_什么时候用多级缓存

什么时候用多级缓存

多级缓存

1. 前言

提到缓存,想必每一位软件工程师都不陌生,它是目前架构设计中提高性能最直接的方式。

缓存技术存在于应用场景的方方面面。从网站提高性能的角度分析,缓存可以放在浏览器,可以放在反向代理服务器,还可以放在应用程序进程内,同时可以放在分布式缓存系统中。

从用户请求数据到数据返回,数据经过了浏览器,CDN,Nginx代理缓存,应用服务器,以及数据库各个环节。每个环节都可以运用缓存技术。

在这里插入图片描述

缓存的请求顺序是:用户请求 → HTTP 缓存 → CDN 缓存 → Nginx代理缓存 → 进程内缓存 → 分布式缓存。

在技术的架构每个环节都可以加入缓存,我们看看每个环节是如何应用缓存技术的。

2. HTTP缓存

通常 HTTP 缓存策略分为两种:

  • 强缓存
  • 协商缓存。

从字面意思我们可以很直观的看到它们的差别:

  • 强缓存即强制直接使用缓存。
  • 协商缓存就得和服务器协商确认下这个缓存能不能用。

强缓存

强缓存不会向服务器发送请求,直接从缓存中读取资源,在 chrome 控制台的 network 选项中可以看到该请求返回 200 的状态码,并且size显示from disk cachefrom memory cache

协商缓存

协商缓存会先向服务器发送一个请求,服务器会根据这个请求的 request header 的一些参数来判断是否命中协商缓存,如果命中,则返回 304 状态码并带上新的 response header 通知浏览器从缓存中读取资源。

2.1 HTTP 缓存控制

在 HTTP 中,我们可以通过设置响应头以及请求头来控制缓存策略。

强缓存可以通过设置ExpiresCache-Control 两种响应头实现。如果同时存在,Cache-Control优先级高于Expires

Expires

Expires 响应头,它是 HTTP/1.0 的产物。代表该资源的过期时间,其值为一个绝对时间。它告诉浏览器在过期时间之前可以直接从浏览器缓存中存取数据。由于是个绝对时间,客户端与服务端的时间时差或误差等因素可能造成客户端与服务端的时间不一致,将导致缓存命中的误差。如果在Cache-Control响应头设置了 max-age 或者 s-max-age 指令,那么 Expires 会被忽略。

Expires: Wed, 21 Oct 2015 07:28:00 GMT
  • 1

Cache-Control

Cache-Control 出现于 HTTP/1.1。可以通过指定多个指令来实现缓存机制。主要用表示资源缓存的最大有效时间。即在该时间端内,客户端不需要向服务器发送请求。优先级高于 Expires。其过期时间指令的值是相对时间,它解决了绝对时间的带来的问题。

Cache-Control: max-age=315360000
  • 1

Cache-Control 有很多属性,不同的属性代表的意义也不同。

可缓存性

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/669040
推荐阅读
相关标签
  

闽ICP备14008679号