HTTP缓存

使用缓存的优点:
减少冗余数据的传输:传输重复的数据;
缓解带宽瓶颈问题:网络为本地客户端提供的带宽要比远程服务器要宽,因此传输速度更快;
降低对服务器的要求:更快的响应速度
降低距离时延:路由器时延;本身时延;
缓存命中,未命中,再验证:

缓存命中,未命中,再验证

速度: 缓存命中>缓存再验证成功>缓存未命中=缓存再验证失败;

缓存再验证命中:304 Not Modified;
缓存再验证未命中:200 OK
服务器对象被删除:404 Not Found
命中率: 文档命中率(缓存命中率),字节命中率;
区分命中和未命中:
缓存命中和服务器正常响应都是 200 OK;
客户端可以使用响应的Date首部与当前时间进行比较,如果Date首部中时间较早,就可以认为这是一条缓存;
缓存的拓扑结构:
公有缓存;
私有缓存;
私有缓存: 单个用户专享;多个客户端的重复请求
公有缓存(代理缓存):共享的缓存;减少冗余数据量的传输;

私有缓存

共享缓存

代理缓存的层次的结构:
在较小的缓存中的未命中的请求会被导向较大的父缓存;缓存链过长会有性能损耗;
缓存的处理步骤:
(1)接收:缓存从网络中读取抵达的请求报文;
(2)解析:缓存对请求报文进行解析;提取各种URL和各种首部;
(3)查询:缓存查看是否有本地副本可用,如果没有,就向服务器获取一份副本,保存在本地;
(4)新鲜度检测:缓存查看已缓存的副本是否新鲜,如果不新鲜,就询问服务器是否有任何更新;
(5)创建响应
(6)发送
(7)日志
客户端第一次请求
客户端第一次请求

客户端再次请求

客户端再次请求

缓存过期: Expires首部和Cache-Control:max-age首部;
Expires首部:HTTP/1.0+ Expires;绝对时间;依赖于计算机的时钟设置;
max-age首部:HTTP/1.1;相对时间;

两种首部

服务器再验证:文档过期并不代表缓存中的文档和服务器上的文档在内容上有实际的出入;只是代表需要进行再验证的时间到了;
如果再验证显示文档内容没有发生变化,缓存只需要获取首部,包含一个新的过期时间,并对缓存中的首部进行更新就行了;
如果再验证显示文档内容发生了变化,重新获取缓存,存储缓存即可;
两种验证过期的方式
If-Modified-Since:Last-Modified 再验证
If-None-Match:Etag 再验证
If-Modified-Since:Last-Modified 的缺陷:
(1)有些文档会被周期性重写,但是实际内容是一样的;尽管内容没变,还是会导致Last-Modified改变;
(2)Last-Modified 的时间精度为秒,对于时间精度下的修改无法起作用;
(3)有些服务器无法判断Last-Modified
Etag:文档的指纹信息,文档的校验和等等;
强弱验证器:
强验证器:只要内容发生了变化,强验证器就会发生变化;
弱验证器(HTTP/1.1支持):如果只对少部分内容进行修改,弱验证器不会发生变化;
弱验证器带有W/
弱验证器缓存首部

使用时机:
(1)响应带有Etag实体标签,客户端就必须使用Etag实体标签验证;
(2)响应带有Last-Modified ,客户端可以使用If-Modified-Since验证;
(3)两者都有,就必须同时验证,并且两者都满足才会返回304;
控制缓存的能力:
HTTP/1.1
no-store:禁止缓存响应;
no-cache: 可以缓存响应,但是没有进行缓存新鲜度再验证之前,不可以把缓存提供给客户端;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,326评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,228评论 1 304
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,979评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,489评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,894评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,900评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,075评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,803评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,565评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,778评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,255评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,582评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,254评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,151评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,952评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,035评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,839评论 2 277

推荐阅读更多精彩内容

  • 本文内容大多参考《图解HTTP》一书 一. 认识代理服务器 所以讲缓存为什么要先扯代理服务器?别急,让我们看一下一...
    流光号船长阅读 1,838评论 0 10
  • 1. 缓存的分类 缓存分为服务端缓存和客户端缓存 服务端缓存又分为代理服务器缓存和反向代理服务器缓存(也叫网关缓存...
    lemonCode阅读 338评论 0 0
  • 网络特有的延迟以及数据传输的成本,制约互联网快速获取Web资源。为此,HTTP协议引入缓存以空间换时间,使浏览器缓...
    大头8086阅读 3,001评论 2 12
  • 每个浏览器都自带了 HTTP 缓存实现功能。您只需要确保每个服务器响应都提供正确的 HTTP 标头指令,以指示浏览...
    _july77阅读 267评论 0 0
  • 前言 上一章我们主要讲述了如何利用服务器实现群聊.本章主要学习是从客户端的角度简单实现群聊功能. 步骤: 1, 导...
    Alexander阅读 1,128评论 0 0