http缓存协议

强缓存介绍:  状态码为200

强缓存之后不需要再向服务器发送请求。 而是从浏览器读取分为(内存缓存)(硬盘缓存),

缓存时间到期后就会向服务器重新发送请求

memory cache(内存缓存)内存缓存存储在浏览器内存当中,一般刷新网页的时候会发现很多内存缓存

disk cache(硬盘缓存)硬盘缓存是存储在计算机硬盘中,空间大,但是读取效率比内存缓存慢
 

静态资源的缓存

app.use(express.static('./static',{

    maxAge:1000*60*5 // 强缓存的时间

    lastModified:true // 协商缓存

}))

动态资源缓存 接口

强缓存 Expires的使用

app.get('/api',(req,res)=>{

    // 里面是缓存的时间

    res.setHeader('Expires',new Data('2024-4-22 12:00:00').toUTCString())

    res.send('111')

})


强缓存 Cache-Control

public 任何服务器都可以缓存  private只能浏览器缓存

app.get('/api',(req,res)=>{

    // 里面是缓存的时间

    res.setHeader('Cache-Control','public',max-age=60)  60s

    res.send('111')

})


如果两种缓存同时存在的话 以 max-age的时间为准了

协商缓存的状态码为304

强缓存和协商缓存同时出现 浏览器优先于强缓存

解决这个问题: no-cache告诉浏览器走协商缓存不要走强缓存

const getFileModifyTime = ()=>{

    return  fs.statSync('./index.js').mtime.toISOString() // 读取文件最后的修改时间
}

app.get('/api3',(req,res)=>{

    res.setHeader('Cache-Control','no-cache') // 不要浏览器走强缓存

    //浏览器会自动携带请求头的信息 时间 获取浏览器的时间和修改时间进行对比

    const ifModeifiedSince = req.headrs['if-modified-since']// 获取浏览器请求头的信息

    // 获取文件最后修改的时间

    const modifyTime = getFileModifyTime()

    if(ifModeifiedSince===modifyTime) { // 如果相同找协商缓存
        
        res.statusCode = 304

        res.end()

        return false

    }

    res.setHeader('Last-Modified',modifyTime) // 设置文件最后修改的时间

    res.send('cache-control')

})

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值