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,更精确。

相关推荐
zc-code8 小时前
HTTP性能优化实战:从协议到工具的全面加速指南
网络·网络协议·http·缓存·性能优化·html
是阿建吖!8 小时前
【Redis】初识Redis(定义、特征、使用场景)
数据库·redis·缓存
Antonio91514 小时前
【MySQL】MySQL 缓存方案
数据库·mysql·缓存
程序员勋勋11 天前
Redis的String数据类型底层实现
数据库·redis·缓存
YouQian7721 天前
(AC)缓存系统
算法·缓存
KNeeg_1 天前
Spring循环依赖以及三个级别缓存
java·spring·缓存
lkf197111 天前
商品中心—1.B端建品和C端缓存
开发语言·后端·缓存
小王子10241 天前
Django缓存机制详解:从配置到实战应用
redis·缓存·django·rbac
Antonio9151 天前
【Redis】Redis 数据存储原理和结构
数据库·redis·缓存
problc1 天前
大模型API和秘钥获取地址
数据库·redis·缓存