HTML浏览器缓存(Browser Cache)

介绍:

浏览器缓存是Web缓存中最直接、最常见的一种形式。当浏览器首次请求某个资源时,如果服务器响应中包含了缓存控制指令(如Cache-Control、Expires等),浏览器就会将这些资源存储在本地缓存中。后续请求相同资源时,如果缓存未过期,浏览器将直接从缓存中加载资源,而无需再次向服务器发起请求。

浏览器缓存分为两种:强制缓存和协商缓存。

一、强制缓存

浏览器第一次向服务器发送请求,服务器返回资源,并设置Cache-Control: max-age=一串数字,这一串数字就是过期时间,例如设置一小时后过期,则max-age=3600。

浏览器第二次向服务器发送请求。

如果max-age没有过期,例如在一小时内请求资源,则从缓存中拿资源。

如果max-age已过期,则进行下一步判断协商缓存。

代码示例(设置HTTP响应头以控制缓存):

javascript 复制代码
HTTP/1.1 200 OK  
Cache-Control: max-age=3600  // 缓存有效期为1小时  
Content-Type: text/html  
...

二、协商缓存

关键词:Last-Modified、E-Tag

浏览器第一次向服务器发送请求,服务器返回资源,并设置资源标识(Last-Modified或者E-Tag),将资源和标识码存在缓存中。

浏览器第二次向服务器发送请求和资源标识(If-Modified-Since或者If-None-Match),服务器根据资源标识判断当前缓存里的资源是否是最新资源。

如果不是最新资源,服务器返回状态码200并重新发送最新资源和最新的资源标识码。

如果是最新资源,服务器返回状态码304,并从缓存中拿资源。

资源标识

  • Last-Modified:资源上一次修改的时间。对应发送请求的资源标识:If-Modified-Since
  • ETag:资源对应的唯一字符串。对应发送请求的资源标识:If-None-Match

优先使用ETag,更精确。

相关推荐
想要打 Acm 的小周同学呀4 小时前
LRU缓存算法
java·算法·缓存
hlsd#4 小时前
go 集成go-redis 缓存操作
redis·缓存·golang
镰刀出海4 小时前
Recyclerview缓存原理
java·开发语言·缓存·recyclerview·android面试
奶糖趣多多6 小时前
Redis知识点
数据库·redis·缓存
CoderIsArt7 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
ketil2711 小时前
Redis - String 字符串
数据库·redis·缓存
生命几十年3万天14 小时前
redis时间优化
数据库·redis·缓存
java知路16 小时前
springboot 基于google 缓存,实现防重复提交
spring boot·后端·缓存
_.Switch17 小时前
Serverless架构与自动化运维
运维·python·缓存·自动化·运维开发
元气满满的热码式19 小时前
Redis常用的五大数据类型(列表List,集合set)
数据库·redis·缓存