HTTP强缓存和协议缓存
什么是浏览器缓存
浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问
同一页面时,浏览器就可以直接从本地磁盘加载文档。
首先了解一下浏览器缓存的优缺点
优点:
1.减少了冗余的数据传输,节省流量
2.减少了服务器的负担,大大的提升了网站的性能
3.加快了客户端加载网页的速度
4.用户体验好
缺点:
1.如果资源更新,客户端还用缓存会造成用户获取不到最新的资源信息
浏览器缓存
一. 内存缓存(memory cache) ( js文件和图片等资源一般放在内存缓存中)
特点:
1.快速读取(直接把文件存入进程内存中,占用改进程一定的内存资源,下次运行时可快取)
2.时效性(一旦结束进程,改进程的内存清空)
二. 硬盘缓存(disk cache) (css资源一般存放在硬盘缓存中)
特点:
1.退出进程,数据不会清空
三. 缓存优先级(三级缓存原理)
1.先从内存中查找,如果有,直接加载
2.如果没有,从磁盘中读取,直接加载
3.如果都没有,就请求网络获取数据
4.将获取的资源缓存到内存和磁盘中
例如:
当访问网站 www.baidu.com时 状态码:200
刷新页面时 状态码:200(来自内存缓存)
关闭页面重新打开www.baidu.com时 状态码: 200(来自磁盘缓存)体现了内存缓存的时效性
缓存过程分析
浏览器与服务器通信的方式为应答模式,即:浏览器发起HTTP请求 -- 服务器响应该请求,那么浏览器第一次向服务器发起该请求后拿到请求结果,会根据响应报文中的HTTP的缓存标识,决定是否缓存结果,是则将请求结果和缓存标识存入浏览器缓存中。
1.浏览器每次发起请求,都会现在浏览器缓存中查找该请求的结果以及缓存标识
2.浏览器每次拿到返回的请求结果都会将该结果和缓存标识存入浏览器缓存中
浏览器缓存分为强缓存和协商缓存
一:强缓存
强缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程。
控制强缓存的字段分别是Expires 和 Cache-Control
1. Expires(失效,到期)
Expires 是HTTP 1.0 控制网页缓存的字段, Expires 是一个表示有效期的时间字段(GTM),当浏览器发送的请求时间小于有效期的时间,则直接使用缓存结果。
2.Cache-Control(缓存控制)
Cache-Control的取值主要有:
1.public :所有内容都将被缓存(客户端和代理服务器都可缓存)
2.private:所有内容只有客户端可以缓存,Cache-Control 的默认值
3.no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
4.no-store:所有内容都不会被缓存,既不使用强缓存,也不使用协商缓存
5.max-age = xxx : xxx表示有效时间,是一个相对值,在有效时间则直接使用缓存结果
Cache-Control 的优先级高于Expires
二.协商缓存
协商缓存就是在强缓存失效后,浏览器携带缓存标识向服务器发送请求,由服务器根据缓存标识决定是否使用缓存的过程,主要有一下两种情况:
1. 协商缓存生效,返回304(服务端已经执行了GET,但文件未变化)
2.协商缓存失败,返回200 和请求结果
协商缓存的标识也是在响应报文的HTTP头中和请求结果一起返回给浏览器
控制协商缓存的字段分别有:Last-Modified / If-Modified-Since 和 Etag / If-None-Match 其中Etag / If-None-Match 的优先级高于Last-Modified / If-Modified-Since.
1.Last-Modified / If-Modified-Since
1.Last-Modified是服务器响应请求是,返回该资源文件在服务器最后被修改的时间
2.If-Modified-Since则是客户端再次发送请求时,携带上次请求返回的Last-Modified值,服务器通过If-Modified-Since的值和当前服务器上存在的Last-Modified值做比较,如果不同,则返回200和请求数据。如果相同,则返回304 代表资源无更新,可以继续使用缓存文件。
2.Etag / If-None-Match
1.Etag是服务器响应请求时,返回当前资源文件的一个唯一的标识。
2.If-None-Matche是客户端再次发起请求时,携带上次请求返回的唯一标识的Etag值,通过此字段值和服务器上的Etag做比较,如果相同,则返回304 代表资源无更新,继续使用缓存文件;不一致则返回200 和所请求的资源
结语
总的来说强缓存优先于协商缓存,当强缓存中标时,直接使用缓存资源,如果强缓存没有中标则使用协商缓存,协商缓存由服务器决定是否使用缓存,如果协商缓存失效,则重新获取请求结果,再存入浏览器缓存中,生效则返回304 ,使用浏览器缓存。
摘自:
彻底理解浏览器的缓存机制(http缓存机制) - saucxs - 博客园 (cnblogs.com)
彻底明白http强缓存和协议缓存_世态炎凉!!的博客-CSDN博客_强缓存协议缓存
HTTP强缓存和协议缓存相关推荐
- 彻底明白http强缓存和协议缓存
我们整天和浏览器和打交道,应该都听过强缓存和协议缓存,强缓存和协商缓存(也有叫对比缓存)都是浏览器的缓存策略,需要先明确一点,既然是浏览器的缓存,缓存的数据都是存放于客户端的机子上的,只是根据优先级不 ...
- 三级缓存/缓存行概念/缓存一致性协议/缓存对齐编程
- 前端协商缓存强缓存如何使用_强制缓存和协商缓存有什么区别
1.背景介绍 做前端有两个比较令人头痛的事,一个是命名,另一个就是缓存了.HTTP协议提供了非常强大的缓存机制, 了解这些缓存机制,对提高网站的性能非常有帮助. 2.知识剖析 什么是浏览器缓存 浏览器 ...
- 关于缓存一致性协议、MESI、StoreBuffer、InvalidateQueue、内存屏障、Lock指令和JMM的那点事
前言 事情是这样的,一位读者看了我的一篇文章,不认同我文章里面的观点,于是有了下面的交流. 可能是我发的那个狗头的表情,让这位读者认为我不尊重他.于是,这位读者一气之下把我删掉了,在删好友之前,还叫我 ...
- 强制缓存和协商缓存的区别
什么是浏览器缓存 浏览器缓存(Brower Caching)是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档. 浏览器缓存的优点有: 1 ...
- 说说web缓存-强缓存、协商缓存
网上关于WEB缓存的文章很多,今天汇总一下. 为什么要用缓存 一般针对静态资源如CSS,JS,图片等使用缓存,原因如下: 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影 ...
- 缓存服务器协议有哪些,HTTP 协议的缓存机制概述
HTTP 协议的缓存机制涉及到多个请求头字段,而且整个缓存机制的细节行为也存在各种情况的差异,譬如说什么时候访问本地缓存不发送请求,什么时候发送请求查看资源是否更新,获取 response 什么情况下 ...
- 你知道304吗?图解强缓存和协商缓存
http协议-常见状态码,请求方法,http头部,http缓存 一.http状态码 1.引例阐述 2.状态码分类 3.常见状态码 4.关于协议和规范 二.http 方法 1.传统的methods 2. ...
- 前端Http协议缓存初解
[TOC] 简介 用户获取网络资源,需要通过非常长的网络去服务器上请求资源,另外服务端为了应对大量的用户请求而不断的提升硬件性能与带宽.这对用户与服务端都非常的不友好.而缓存就是为了解决用户请求速度与 ...
最新文章
- c++矩阵作为函数输入变量_C++实现矩阵乘法
- Educational Codeforces Round 30 C
- docker php示例,Docker PHP 例子
- empinfo Oracle数据库,Oracle数据库---包
- linux testlink安装,Linux下安装testlink
- JDK5.0的11个主要新特征
- Solidworks踩坑随笔
- form表单提交和重置小结
- 四川省成都市谷歌高清卫星地图下载
- oracle临时表空间自动清理,Oracle 临时表空间满的清理
- 网站服务器域名费用入什么科目,企业域名服务费记什么科目
- 视觉slam十四讲——求解相机的位姿
- html基本标签斜体,请选择产生斜体字的HTML标签:
- Redis知识点整理(详讲)
- 信阳毛尖大山茶、高山茶、小山茶的辨别
- 阿里云1核1G内存1M宽带支持多少IP访问量够用吗?
- request + bs4 爬取网易云音乐热门评论
- GPRS电力远程自动抄表系统解决方案
- 如何使用Towify在小程序中实现夜间模式和日间模式的自由切换?
- vue整合uniapp_uni-app仿微信App界面|vue+uniapp聊天室|仿微信朋友圈