简事二三 之 http缓存机制
http缓存相关概念:
请求头:浏览器向服务器发送请求的数据,资源
响应头:服务器向浏览器相应数据,告诉浏览器我是谁,我要怎么做。如,我是nginx,给你的资源是正确的200 还是错误的404,我告诉你需要缓存多久。
缓存优先级: pragma → cache-control → expires → ETag → last-modified
Http1.0: Pragma(已废弃), expires
Http1.1: Cache-control, ETag, Last-Modified
http缓存可以分为两类: 强制缓存,协商缓存
- 强制缓存:expires, Cache-control
1). Expires: 缓存过期时间,GMT时间,以客户端时间作为参考
2). Cache-control: 相对时间,属性值分为:- Private:仅允许客户端缓存
- Public:客户端和代理服务器都可以缓存
- Max-age=xxx:缓存内容将于xxx秒后失效
- No-cache:需要使用协商缓存来验证缓存数据
- No-store:所有内容都不会缓存,强制缓存、协商缓存都不会触发
- 协商缓存:Last-Modified, ETag
1)Last-Modified:定义上一次修改时间,再次请求时带请求头if-modified-since,与服务器进行对比
2)ETag:加密字符串,再次请求时带请求头if-none-match,与服务器对比
对于强制缓存,服务器通知浏览器一个缓存时间,在缓存时间内,下次请求直接用缓存,不在时间内则执行协商缓存策略。
对于协商策略,将缓存信息中的ETag和Last-Modified通过请求发送给服务器,有服务器校验,返回304状态码时,浏览器直接使用缓存。
浏览器第一次请求:
浏览器请求 -> 无缓存 -> 向web服务器请求 -> 请求响应,缓存协商 -> 呈现
浏览器再次请求:
常见的请求头:
常见的响应头:
简事二三 之 http缓存机制相关推荐
- 微服务架构下静态数据通用缓存机制
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | my.oschina.net/u/3971241/bl ...
- 微服务架构下的静态数据通用缓存机制!
什么是静态数据 为什么需要缓存 通用缓存机制 总结 后记 在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验 ...
- android 视频的缩略图 缓存机制和 异步加载缩略图
在这次的工作开发项目中,涉及到一个视频缩略图的视频列表:这个在大家看来,制作视频缩略图就是两行代码就搞定的事.确实是这样的,百度一下,每个帖子都知道制作视频缩略图的方法,在这里确实也是一样的,但是我要 ...
- 微服务架构下,静态数据通用缓存机制!
本文转自:波斯码 链接:https://blog.bossma.cn/architecture/microservice-business-static-data-universal-cache-me ...
- 微服务架构,如何做分布式,通用缓存机制?
在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在的关键问题以及探寻通用的解决之道. 什么 ...
- Spring mvc HTTP协议之缓存机制
概述 Spring MVC 支持HTTP协议的 Last-Modified 缓存机制. 1. 在客户端地一次输入URL时,服务器端会返回内容和状态码200, 表示请求成功,同时会添加一个"L ...
- Android Glide图片加载框架(三)缓存机制
文章目录 一.缓存简介 二.缓存用法 内存缓存方式 磁盘缓存方式 三.缓存KEY 四.内存缓存 内存缓存流程 五.磁盘缓存 磁盘缓存流程 Android Glide图片加载框架系列文章 Android ...
- 缓存能提高多少 php,提高PHP编程效率 引入缓存机制提升性能
因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的 ...
- 前端更新需要清空浏览器缓存_浏览器缓存机制分析及前端缓存清理
浏览器缓存机制分析及前端缓存清理 发布时间:2018-06-03 16:56, 浏览次数:857 本文主题:理清浏览器的缓存机制的内部逻辑,并给出避免浏览器缓存的相关解决方案 相信很多新手前端发布页面 ...
最新文章
- VMware vCenter Converter Standlone迁移手册
- 小红书shield算法分析
- java的requestmapping_SpringMVC RequestMapping 详解
- word中填充效果锁定纵横比_【文艺范】Word文档中的首字下沉效果
- (四)Qt实现自定义模型基于QAbstractTableModel
- java与c基本数据类型比较,C++与Java基本数据类型比较
- CentOS 7安装zabbix 4.4(资源)
- 常用的Regex验证方法
- 德国精品软件 Throttle 网络加速软件
- vba移动文件_你想要的爬虫、VBA系列教程这里都有!
- Invalid injected android support version ‘202.7660.26.42.7322048‘, expected to be of the form ‘w.x.y
- sublime解决中文乱码问题
- 月薪12.8K,转行测试斩获3份过万offer,分享一些我的小秘招
- Wembley record broken by U2 gig U2演唱会攻破温布利
- Qt 制作带农历的日历
- 北洋(HOKUYO)雷达在ROS Kinetic下使用
- 平板电脑支持html吗,HTML5视频无法在平板电脑上播放(HTML5 video not playing on tablets)...
- java privatekey输出字符串_JAVA题:编写一个加密程序,对用户输入的字符串加密后输出。加密的方法是将每个字符映射成字母表中的对称...
- 每日C语言代码(The second day)
- 从后台得到webshell技巧大汇总
热门文章
- 不使用第三个变量交换两个变量的值
- 基于silerlight for embedd 视频播放器的之一的问题
- winserver下oracle好运维吗,在Windows 客户端下备份远程Linux服务器上的Oracle数据库...
- sql 日期和当前日期时间差_如何通过excel获取当前的日期和时间
- 编写AXI4协议读写BRAM并仿真验证
- moldflow2018安装教程
- 北斗导航 | 卫星导航基础知识(卫星轨道及卫星在轨运动)
- 神经网络 | DeepVO:Towards End-to-End Visual Odometry
- oracle自动还原,什么是oracle自动恢复操作
- java基本数据类型_Java 中有几种基本数据类型是什么?