缓存与异步消息传递技术解析
缓存技术
缓存的存储资源有限,因此必须定期从内存中移除项目以腾出空间。为了影响缓存淘汰,服务可以指定缓存中的资源应保持有效的时长,即新鲜度。当请求新鲜资源时,缓存会直接提供本地存储的结果,而无需联系源服务器。一旦缓存资源的指定保留期到期,它就会变得陈旧,成为淘汰的候选对象。
新鲜度是通过组合头部值来计算的。“Cache-Control: max-age=N”头部是主要指令,该值以秒为单位指定新鲜期。
- 如果未指定 max-age,则接下来检查 Expires 头部。若该头部存在,则使用它来计算新鲜期。Expires 头部指定了一个明确的日期和时间,在此之后资源应被视为陈旧。例如:Expires: Wed, 26 Oct 2022 09:39:00 GMT
- 作为最后手段,可以使用 Last-Modified 头部来计算资源保留期。该头部由源服务器设置,用于指定资源的最后更新时间,其格式与 Expires 头部相同。缓存服务器可以使用 Last-Modified 基于其支持的启发式计算来确定资源的新鲜生命周期。计算使用 Date 头部,该头部指定响应消息从源服务器发送的时间。资源保留期等于 Date 头部的值减去 Last-Modified 头部的值再除以 10。
HTTP 还提供了另一个可用于控制缓存项新鲜度的指令,即 Etag。Etag 是一个不透明的值,Web 缓存可以使用它来检查缓存的资源是否仍然有效。以下是一个示例:
假设一个冬季度假村每天早上 6 点生成一份天气报告。如果当天天气发生变化,度假村会更新报告。有时一天会更新两到三次,有时如果天气稳定则不会更新。当请求天气报告时,服务会响应一个最大年龄来定义缓存新
超级会员免费看
订阅专栏 解锁全文
8万+

被折叠的 条评论
为什么被折叠?



