美文网首页
强制缓存和协商缓存--node实现

强制缓存和协商缓存--node实现

作者: Wang_Yong | 来源:发表于2019-08-01 16:05 被阅读0次

强制缓存整体流程就是在第一次访问服务器取到数据之后,在过期时间之内不会再去重复请求。

node中实现强制缓存

Expires http中1.0中就是通过 Expires响应头来实现

const http = require('http')
const url = require('url')
const path = require('path')
const fs = require('fs')

http.createServer((req, res) => {
  const {pathname} = url.parse(req.url, true)
  console.log(pathname);
  
  let abs = path.join(__dirname, pathname)
  res.setHeader('Expires', new Date(Date.now() + 20000).toGMTString())
  fs.stat(path.join(__dirname, pathname), (err, stat) => {
    if (err) {
      res.statusCode = 404
      res.end('not found')
      return
    }
    if (stat.isFile()) {
      fs.createReadStream(abs).pipe(res)
    }
  })
}).listen(3000)
  • 前端页面实现 // 直接引入一个图片即可
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <img src="./a.jpg" alt="" srcset="">
</body>
</html>

以上代码给Expires设置过期时间20S[看下图]

Expires 过期时间=.png
    1. 首次请求 全部走网络请求 a.jpg中下的size为658kb 直接从网络获取


      image.png
    1. 20s内F5刷新当前,从内存里面加载。因为我们没有关闭TAB,所以浏览器把缓存的应用加到了内存缓存 size这一栏就变成了memoey cache


      image.png
  • 3 关闭tab 窗口的时候,重新打开 size这一栏变成disk cache disk cache=.png

过期的缺点:
在这里,其他电脑访问服务器,若修改电脑的本地时间,会导致浏览器判断缓存失效 这里修重新修改缓存时间: res.setHeader('Expires',new Date(Date.now()+ 2000000).toGMTString())

cache control

http中1.1中主要通过Cache-Control来实现
该字段表示资源缓存的最大有效时间,该时间段内,浏览器不需要像服务器发起请求

Cache-Control的区别
Expires设置的是绝对时间
Cache-Control设置的事相对时间

Expires 和 Cache-control 区别
Expires设置的是 绝对时间
Cache-control设置的是 相对时间
缓存控制的优先级大于到期

private 客户端可以缓存
public 客户端和代理服务器均可缓存
max-age 缓存资源将在xxx秒后过期
no-cache 需要使用协商缓存来验证是否过去
no-store 不可缓存

协商缓存
协商缓存在每次读取数据时都要和服务器通信,并且增加缓存标志。

相关文章

  • 强制缓存和协商缓存--node实现

    强制缓存整体流程就是在第一次访问服务器取到数据之后,在过期时间之内不会再去重复请求。 node中实现强制缓存 Ex...

  • 浏览器缓存

    强制缓存和协商缓存: 强制缓存: 协商缓存: 强制缓存的优化 http异步请求就用不到浏览器的缓存的机制了 不...

  • HTTP缓存协议

    缓存分两种:强制缓存 和 协商缓存强制缓存:cache-control:控制缓存是否生效,有可能过了生效时间但文件...

  • 协商缓存和强制缓存

    1.背景介绍 做前端有两个比较令人头痛的事,一个是命名,另一个就是缓存了。HTTP协议提供了非常强大的缓存机制, ...

  • 前端面试题持续更新

    强制缓存与协商缓存 强制缓存不会向服务器发送请求,直接在缓存资源中读取,返回状态吗200 协商缓存会向服务器发送请...

  • HTTP缓存之协商缓存和强制缓存

    通常根据是否需要向服务器重新发起HTTP请求去确认缓存是否有效将缓存分为强制缓存和协商缓存 强制缓存 强制缓存就是...

  • http缓存和各个版本差异理解

    http缓存我们可以通过设置http头部属性来对资源进行缓存,资源缓存分为强制缓存和协商缓存 强制缓存expire...

  • 对http缓存机制的理解

    先用一张图来展示浏览器缓存机制: 浏览器缓存分两种:强制缓存和协商缓存。 强制缓存 强制缓存主要是通过Expire...

  • http 缓存

    一、两种缓存类型 http缓存主要分为两种缓存类型, 强制缓存和协商缓存 1、强制缓存 客户端会去查看缓存数据库,...

  • http缓存过程

    注:http 缓存只能缓存 get 方式请求的资源浏览器缓存分 强制缓存 和 协商缓存 ,分别使用的字段前者是Ex...

网友评论

      本文标题:强制缓存和协商缓存--node实现

      本文链接:https://www.haomeiwen.com/subject/ielqdctx.html