前言
其实 http
就是规定了什么时候该做什么的一本操作手册。所以要学好它,其实就是靠多背,多实践,让人注意到边界条件,为了加深我对它的理解,我会举一些场景故事来加深我的印象。
小故事
part1 定日子(expiress)
假如浏览器是一个懒鬼,你每天都在用它上网,让在互联网上跑来跑去的。有一天他开始偷懒了,因为外面很挤,每次上网它又会跑很远,于是有一天(比如2020/09/01
)他就想出了一个偷懒的办法:把你上网浏览的的网页资源(百度首页)存下来,在2020/09/04 00:00:00
去更新这个页面,在这三天里你每次访问百度首页,它就在身上拿出来,终于不跑了,前两天它很爽,天天宅在本地,都胖了几个b了。但是万万它没想到的是百度居然在2020/09/03 00:00:00
这一天更新了版本。三号白天,你朋友来你家,用你电脑上网的时候发现你的百度首页没更新,还是破破烂烂的,它拿出他的电脑来打开,哇(金色传说),有点好看。可以,这一天你的浏览器被你一顿胖揍。
part2 定间隔(cache-control)
这一次他知道了一定要定时去检查有没有更新,所以它觉得每天去检查一次,每天都至少去一次,如果更新了(改变了),那它就能获得最新的数据,这样就不会被揍了(它是这么想的)。 这一天它早早的出去更新了,你朋友中午过来了-->你又被秀一脸-->它再次被胖揍。它心里想:“不对啊,我早上刚更新了,为什么还不是最新版本?”它万万没想到百度的工程师加班到早上10点才更新了版本,失算了呀。
part3 找中介问对面最近有没有更新(Last-Modified)
经历了前两次痛殴,它决定你每次上网它都要让人先看一下那边有没有修改过,但是要保密,不能让中间人知道,于是它就和那边的人商量好记下每次修改的时间,下次它让人带着时间过去,比较一下时间,如果时间一样,那它就不修改了。如果时间变了,它就更新一下。
part4 做暗号(Etag)
经过第三次的偷懒方法,它一开始是比较满意的,但是偶尔它发现,有时候就算时间改变了,它去拿过来的还是和上次的一样,这不是让他白跑吗?于是,一个终极懒狗的方法就诞生了:它居然做了暗号。它去一次它就在拿东西上面做一个记号,每次招人去看的时候,先看时间,要是时间一样就直接溜了;要是时间对不上了,让人继续看它做的记号还在不在,要是在,那它就知道,没事,虚惊一场。要是不在它就知道大事不好了,它要亲自跑一躺,更新版本,以免被揍。
本文主要是对 这篇文章 的一个强化记忆,忽略了其中技术细节,抽象出整个过程并加以戏剧化。