在具体了解 HTTP 缓存之前先来明确几个术语:

缓存命中率:从缓存中得到数据的请求数与所有请求数的比率。理想状态是越高越好。
过期内容:超过设置的有效时间,被标记为“陈旧”的内容。通常过期内容不能用于回复客户端的请求,必须重新向源服务器请求新的内容或者验证缓存的内容是否仍然准备。
验证:验证缓存中的过期内容是否仍然有效,验证通过的话刷新过期时间。
失效:失效就是把内容从缓存中移除。当内容发生改变时就必须移除失效的内容。

浏览器缓存分为强缓存和协商缓存

1.强缓存

  • 强缓存时,浏览器并不会将请求发送给服务器。在Chrome的开发者工具中看到http的返回码是200,但是在Size列会显示为(from cache)。
  • 强缓存是利用http的返回头中的Expires或者Cache-Control两个字段来控制的,用来表示资源的缓存时间。

Expires

  • 缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点。也就是说,Expires=max-age + 请求时间,需要和Last-modified结合使用。
    该字段会返回一个时间,比如Expires:Thu,31 Dec 2037 23:59:59 GMT。这个时间代表着这个资源的失效时间,也就是说在2037年12月31日23点59分59秒之前都是有效的,即命中缓存。这种方式有一个明显的缺点,由于失效时间是一个绝对时间,所以当客户端本地时间被修改以后,服务器与客户端时间偏差变大以后,就会导致缓存混乱。于是发展出了Cache-Control。

Cache-Control

  • Cache-Control是一个相对时间,例如Cache-Control:3600,代表着资源的有效期是3600秒。由于是相对时间,并且都是与客户端时间比较,所以服务器与客户端时间偏差也不会导致问题。
  • Cache-Control与Expires可以在服务端配置同时启用或者启用任意一个,同时启用的时候Cache-Control优先级高。
  • max-age 指定一个时间长度,在这个时间段内缓存是有效的,单位是s。例如设置 Cache-Control:max-age=31536000,也就是说缓存有效期为(31536000 / 24 / 60 * 60)天,第一次访问这个资源的时候,服务器端也返回了 Expires 字段,并且过期时间是一年后。

http缓存机制详解之--强缓存相关推荐

  1. HTTP缓存机制详解

    HTTP缓存机制详解 一. 前言 二. 缓存的介绍 什么是缓存? 为什么要使用缓存? 1. 减少冗余的数据传输 2. 缓解带宽瓶颈 3. 破坏瞬间拥塞 4. 降低距离时延 三. 缓存有效性 命中和未命 ...

  2. MyBatis的缓存机制详解

    MyBatis的缓存机制详解 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,缓存可以极大的提升查询效率.MyBatis中默认定义了两级缓存,分别是一级缓存和二级缓存. ( ...

  3. mysql的缓存机制是什么意思_MySQL缓存机制详解

    众所周知,缓存的设置是所有现代计算机系统发挥高性能的重要因素之一.对于MySQL数据库来说,也是得益于MySQL缓存机制,才能够提高MySQL数据库的性能,减少数据的内存占比. MySQL缓存机制简单 ...

  4. HTTP 缓存机制详解

    文章目录 HTTP Cache 什么是 HTTP Cache 关键字 简单流程图 代码准备 不设置 明确禁止缓存 private与public 缓存过期策略 1.三种方式设置服务器告知浏览器缓存过期时 ...

  5. jquery源码解析:jQuery数据缓存机制详解2

    上一课主要讲了jQuery中的缓存机制Data构造方法的源码解析,这一课主要讲jQuery是如何利用Data对象实现有关缓存机制的静态方法和实例方法的.我们接下来,来看这几个静态方法和实例方法的源码解 ...

  6. linux缓存详解,Linux磁盘缓存机制详解

    磁盘缓存出现的原因大概有两个:一是访问磁盘的速度远慢于访问内存的速度,通过在内存中缓存磁盘内容可以提高访问速度:二是根据程序的局部性原理,数据一旦被访问过,就很有可能在短时间内再次被访问,所以在内存中 ...

  7. MyBatis:缓存机制详解

    本篇内容包括:MyBatis 缓存机制概述.一级缓存与二级缓存的介绍.配置和具体流程. 一.MyBatis 缓存机制概述 在我们常见的 OLTP(on-line transaction process ...

  8. Nginx 缓存机制详解!

    点击关注公众号,回复"1024"获取2TB学习资源! Nginx 缓存作为性能优化的一个重要手段,可以极大减轻后端服务器的负载.下面我们将介绍 Nginx 缓存配置的相关指令以及 ...

  9. php模板缓存_Smarty模板引擎缓存机制详解

    本文实例讲述了Smarty模板引擎缓存机制.分享给大家供大家参考,具体如下: 首先说下smarty缓存和编译,这是两个不同的概念,编译默认情况下是启动的,而缓存机制需要人为开启,smarty编译过的文 ...

最新文章

  1. 印度首次挑战登月告败,一步之遥≈多大差距?
  2. 开发者和矿工合二为一将是比特币世界的灾难
  3. 个人站立会议(11月17日)
  4. js及jQuery实现checkbox的全选、反选和全不选
  5. Linux基础:Shell脚本学习
  6. 盘点:2019年最赚钱的10种编程语言
  7. Linux内核启动去掉企鹅,修改linux内核kernel开机logo(小企鹅)
  8. 统计学习方法-李航(2)
  9. Unity3D 物体运动小游戏后续
  10. python django+bootstrap4+mysql智慧交通系统构建
  11. 如果你还在找项目,说明你还需要走的路很多
  12. 服务器link系统命令,可以使用命令(7)来查看网络接口的运行情况。输入该命令后,系统的输出信息如下。...
  13. java 容器类 面试_校招面试之Java容器
  14. 关于Fluent瞬态计算你必须掌握的3个技巧
  15. imx8 uuu烧录
  16. 关于Factory mode test item cannot display的原因
  17. [Mac] 为mac自带的QuickTime Player播放器设置快进快退
  18. 如何绘制论文中的图表
  19. Camtasia v2021.18汉化屏幕录像软件教程分享
  20. 点击一次变色,再点击变回原色

热门文章

  1. 使用费曼技术更快地学习任何东西 【翻译】
  2. python远程使用ants中的配准命令和N4biasfiledcorrection注意点
  3. Android系统篇之----Android中的run-as命令引出升降权限的安全问题 Linux中的setuid和se
  4. eclipse luna java 版本_eclipse luna使用jdk1.8初始化
  5. Oracle查询用户权限角色(dba_sys_privs)
  6. Wework创始人再创业,靠美版“自如”估值10亿美金
  7. 2021浙大计算机学硕,浙江大学2021考研分数线已公布
  8. 录音、上传、播放音频微信小程序实践
  9. hd1871 无题——卖得一手好萌
  10. 这个教人怎么赚钱的社群,第7年了