美文网首页
关于前端缓存的笔记

关于前端缓存的笔记

作者: 酢排骨 | 来源:发表于2018-10-24 16:17 被阅读0次

前端缓存分类

  • HTTP缓存(指HTTP请求时候用到的缓存,主要在服务器端进行设置)
  • 浏览器端的缓存(本地缓存技术)

HTTP缓存介绍

1.HTTP大体请求过程如下:

  • 浏览器输入域名
  • DNS解析
  • 根据IP访问服务器
  • 响应服务资源
  • 使用HTTP主要是发起请求和返回请求,以及下载资源过程中消耗的时间。我们希望在第二次以发起HTTP请求以后,尽量的减少请求流程时间和资源下载时间,于是就有了HTTP缓存技术的研究。

2.HTTP缓存方式

  • 缓存分为 “强缓存”和 “协商缓存”
    1. 强缓存
  • 指的是缓存位置在本地浏览器不会在经过浏览器
  • 状态码 200,分为 from memory cache (不访问服务器,直接从内存中读取缓存,关闭浏览器以后数据消失),from disk cache (不访问服务器,从磁盘中读取,关闭浏览器数据还在,ctrl+f5 强刷会重新请求)
请求头/返回头 优先级 缺点
Pragma no-cache: 不直接使用缓存,请求服务器由服务器判断是否使用缓存 已经被废弃(HTTP1.0标准)
cache-control no-cache:同Pragma
no-store: 指示缓存不存储此次请求的响应,每次都下载最新资源
max-age:value=秒,表示时间内不在请求服务器,而是使用本地缓存,如果等于0则直接请求服务器
public/private: 是否只能被单个用户保存
Expires(response header) 表示缓存过期的时间采用GMT时间,例如expires:Wed Oct 24 2018 14:52:45 GMT,如果碰见cache-control的max-age会被max-age覆盖 服务器和本地时间不一定统一
    1. 协商缓存
  • 指的是不符合强缓存的时候,与服务器协商。发http请求到服务器,如何符合规则(即服务器资源与本地相同),返回304,不再返回资源内容;否则返回200和资源内容,然后更新缓存头信息。
  • 状态码 304 Not Modified ,表示访问服务器并没有资源更新,从本地缓存读取资源。
请求头/返回头 缺点
if-modified-since/last-modified if-modified-since(请求头)GMT时间,再次请求的时候会将last-modified字段赋值给它。
last-modified(响应头)表示文件的最后一次修改时间
两者同时出现,目的是为了告诉服务器在这个时间之后对资源是否进行了改良,来决定是否使用缓存资源
if-none-match/Etag if-none-match(请求头)hash字符串,再次请求的时候会将eTag的值赋值给它
Etag(响应头)hash字符串,资源改变以后Etag也会随之改变
服务器根据资源是否改变来决定是否使用缓存资源
使用系统的hash算法,在分布式部署中可能会出现不同服务器Etag值不一致的问题

浏览器缓存

  • 指的是浏览器端的缓存技术(主要有cookie,localStoreage,sessionStorage,indexDB)
    类型 介绍 容量
    cookie 用于存储用户信息,在请求的时候会自动传递给服务器 4k
    LocalStorage 数据一直存储在浏览器,直到用户清除为止,同域不同页签可共享 一般5M以上
    SessionStorage 使用方式类似于LocalStorage,页签关闭清除,同域不同页签中数据修改不会互相影响 一般5M以上
    indexDB 非关系型数据库,一直存在直到用户清除,用于大数据存储 50M以上

缓存原理

  • 先从内存查看,然后硬盘再然后网络请求,每个阶段如果符合规则则返回资源

相关文章

  • 关于前端缓存的笔记

    前端缓存分类 HTTP缓存(指HTTP请求时候用到的缓存,主要在服务器端进行设置)浏览器端的缓存(本地缓存技术) ...

  • 一文读懂http缓存(超详细)

    前端缓存 前端缓存可分为两大类:http缓存和浏览器缓存。我们今天重点讲的是http缓存,所以关于浏览器缓存大家自...

  • 前端缓存

    前端缓存 提示这里讲的前端缓存是指前端对接口数据的缓存处理,而不是通过 HTTP(s)缓存 前言 通常会在项目中有...

  • 前端缓存

    前端缓存 前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务...

  • Android缓存策略

    前言 最近在刷面试题,遇到一个问题,关于缓存的原理的,所以在这里几个笔记,关于缓存很多大牛都说过了,我只是做个笔记...

  • axios cache前端数据缓存

    提示这里讲的前端缓存是指前端对接口数据的缓存处理,而不是通过 HTTP(s)缓存 GITHUB[https://s...

  • 前端缓存接口数据的实现

    前端缓存 API 接口数据,前端怎么知道数据是否变了,该不该取缓存的数据呢。可以采用 HTTP 协商缓存 ETag...

  • 浏览器缓存?优点?清除方法?

    ☆前端优化:浏览器缓存技术介绍 - 简书 浏览器缓存(适用于前端解决缓存问题) - 简书 js清除浏览器缓存问题的...

  • 前端缓存大全

    前端缓存是我们前端开发中, 缓存是不可避免的知识点, 最近在复习缓存的知识, 整理了一下浏览器所有缓存类型, 希望...

  • http协议之浏览器缓存

    前端静态资源并不是每一次都发生变化,那么浏览器会根据协议定义的缓存头来缓存静态资源 关于浏览器的缓存头有 cach...

网友评论

      本文标题:关于前端缓存的笔记

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