服务端的缓存验证 Last-Modified和Etag

本文介绍了HTTP缓存验证机制,重点讲解了Last-Modified和ETag头部字段的使用。在服务端允许缓存的情况下,浏览器会通过这两个字段进行资源的过期检查。当资源未更新时,服务端仅返回304状态码,减少数据传输,提高性能。
摘要由CSDN通过智能技术生成

Last-Modified

 上次修改时间
 配合If-Modified-Since或者If-Unmodified-Since使用
 对比上次修改时间验证资源是否需要更新

ETag

数据签名
典型做法:对资源内容进行hash计算
配合If-Match或者Id-Non-Match使用
对比资源的签名判断是否使用缓存

缓存验证流程

在浏览器和服务端设置都允许缓存策略的前提下(服务端响应头的Cache-Control不为no-store,即禁止任何缓存),如果某个请求的响应头设置了Last-ModifiedEtag

  1. 第一次请求:浏览器会记住响应头的Last-ModifiedEtag
  2. 第二次及以后请求:浏览器会携带保存的Last-ModifiedEtag分别作为If-Modified-SinceIf-None-Match放入请求头中携带过去,以此到服务端验证此次请求的资源是否过期或更新;服务端进行判断,若过期或更新,则返回新的资源,否则返回空即可,节省服务端消耗。

实例

node服务文件:server.js

// server.js
const http = require('http')
const fs = require('fs')

http.createServer(
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值