http 缓存

作者: coolheadedY | 来源:发表于2017-06-23 16:47 被阅读61次

4种缓存方式

HTTP缓存控制参考

分类和区别

  • 强缓存: 规定了过期时间
响应header 描述 常用响应返回内容 推荐 特点 缺点 场景
Cache-Control 在多少秒内进行缓存 public, max-age=秒 固定时间
Expires 在此时间前进行缓存 格林威治时间 绝对时间 受客户端时间影响 兼容http1.0
  • 协商缓存: 需进行比较,会返回304状态码
响应header 请求header 描述 常用响应返回内容 推荐 特点 缺点 场景
ETag If-None-Match 固定字符串 md5 检测文件完整性
Last-Modified If-Modified-Since 在某时间后没再更改 格林威治时间 浏览器根据返回的时间自己决定缓存 浏览器差异

Tips:
Cache-ControlExpires一样,都是在某个时间未到来前进行缓存
默认第一个请求(主页)的请求头里会自动加上Cache-Control: max-age=0,这个请求无论响应头的Cache-Control是什么设置都不会缓存,减少请求次数同时减少下载次数
ETag方式通过检查request.headers里的if-None-Match里的32位md5字符串来检测文件完整性决定是否更新, 如果md5匹配成功则返回304,只减少下载次数

Cache-Control 与 Last-Modified / if-Modified-Since 比较

对于所有可以缓存的资源都可以同时使用这两种策略进行缓存
Cache-Control/Expires的优先级要高于Last-Modified/ETag

  • Cache-Control:
    1设置固定过期时间
    2文件在过期时间没到之前都不进行请求也不进行下载更新
    3解决方法只能通过加时间戳改变文件名解决

  • Last-Modified / if-Modified-Since:
    1通过给文件内容进行哈希算法来确定文件内容版本
    2通过对请求头if-Modified-Since的字符串来检测文件内容有没改变
    3文件内容没改变则不更新资源,跟请求资源的文件名关系不大但每次都需要请求
    4可以通过标识文件版本名、加长缓存时间的方式来减少304响应。

结论

1需要兼容HTTP1.0的时候需要使用Expires,不然可以考虑直接使用Cache-Control
2需要处理一秒内多次修改的情况,或者其他Last-Modified处理不了的情况,才使用ETag,否则使用Last-Modified。
3对于所有可缓存资源,需要指定一个Expires或Cache-Control,同时指定Last-Modified或者Etag。
4可以通过标识文件版本名、加长缓存时间的方式来减少304响应。
HTTP缓存控制参考

MD5

hash算法
任何文件或数据都可以通过MD5算法转化成一个32位的固定字符串
场景:
1检查缓存的文件内容是否有变化
2检查下载文件是否下载完毕(cat xxx.mp4 | md5)

相关文章

  • HTTP缓存原理

    什么是HTTP缓存 HTTP缓存通常指浏览器缓存,基于HTTP中header字段实现HTTP缓存分为强缓存和协商缓...

  • 前端缓存

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

  • 前端缓存详解

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

  • PWA笔记一:Web的万物基础缓存

    前言 这里讨论的缓存包括两种,一种是HTTP缓存,一种是Service Worker缓存。 HTTP缓存 HTTP...

  • 前端缓存的理解 或者 前端数据持久化的理解(强制缓存、协商缓存)

    前端缓存分为HTTP缓存和浏览器缓存 其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置;而...

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

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

  • http缓存

    http缓存分为强制缓存和对比缓存 强制缓存时, 客户端先判断本地缓存是否有效(http/1.1通过Cache-C...

  • HTTP缓存

    缓存控制Cache-Control Cache-Control是Web性能优化的一种,能加速HTTP请求与响应。 ...

  • http缓存

    来源: 《http权威指南》学一个东西,怎么去学习呢?这分为三个步骤,是什么, 为什么, 怎么做?文章我会着重讲怎...

  • Http缓存

    参考文章:http://oohcode.com/2015/05/28/http-cache/ 客户端 头字段: C...

网友评论

    本文标题:http 缓存

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