cookie,session,Local-Storage,Cache-Control汇总

这里,我这几年的http高级知识做一个汇总:

首先是cookie

先上概念:某些网站为了辨别用户身份而存储在用户本地的终端数据。

举个例子,在登录的时候,每次用户登录都要输入一次密码账号,这样就很麻烦,我们设想弄一个凭证(cookie),它是由服务器发送到用户浏览器并保存在本地的一小块数据。当你第一次登陆成功以后,我们就把cookie发给你,浏览器保存下cookie,这样你第二次再来的时候,他就随着http请求一起发到了服务器上,这样就省去了第二次登录的操作。这样大大的节省了用户的操作与服务器的工作压力。

但是,随着技术的发展,cookie遇到了一些问题,第一,安全隐患,第二,存储问题

先说安全隐患,cookie只是一个凭证,既然你有凭证他也有凭证,那么你能用你的凭证去你的账号,你也能把凭证去他的号。由于cookie存在本地(客户端),所以你能随意改变你的cookie,这样岂不是还不如没有这个凭证?对此,我们想到了session。

说道session,要先提出一个概念,会话cookie和持久化cookie。当服务器发给我们cookie的时候,客户端会把cookie做一系列处理,最终分成两种cookie,一种叫持久化cookie,一种叫会话cookie,持久化cookie的值会存在本地,而会话cookie则会存在内存中,当会话结束(浏览器关闭)的时候,会话cookie就会消失。

话题扯回来,当发现这个安全隐患时,我们用session来给特定的用户指定特定的session,用于标识这个用户,并且跟踪用户。他保存在服务器中。当第一次创造session的时候,服务器会在http中告诉客户端,需要在cookie中记录一个sessionID,将这个ID存在会话cookie中,以后每次请求的时候把这个ID发送到服务器,然后服务器会在他的内存中寻找这个sessionID对应的cookie,这样就知道你是谁了。这样为什么说能够解决安全隐患呢?第一,session是存在服务器上的,你不可能知道其他人的sessionID是啥,所以改了也没软用。第二,sessionID是存在会话cookie上的,你一旦关闭了会话,他就会自动消失,而且session一般寿命只有三十分钟左右,超过这个时间自动失效。

对session来说,其实不用cookie而用URL来附上诸如sid=xxxx这样的参数,用来识别用户。这样做使得当你关闭了cookie,session依然能使用。

安全问题是解决了,那么对于存储呢?

首先提出来为啥要存储,在h5之前,由于http协议只规定了cookie能存储文件,于是诸如一些基本的网页效果,比如:第二次登录时显示欢迎回来字样,关闭网页广告后不再显示这类效果,全部都要存在cookie中,cookie一多,发个响应就会奇慢无比,这样网页就快不起来,于是h5提供了新的专门用来存储数据的地方:local-storage。

相比较于cookie的4k存量,local-storage提供了5mb的大小,专门用来存储这些不重要的数据,这些数据安置在本地,理论上永久有效。这样大大提高了协议发送的速度。

相对于local-storage,还有session-storage,两者的唯一区别是session-storage存在会话中,当会话结束时,他就结束了。

好了,我们似乎已经把cookie说的差不多了,但是对http的优化并不局限于此,我们设计Cache-Control来管理缓存的使用,如图,同样的网站:

用缓存
没用

如图所示,我们用缓存对那些并不更新的js,css做了一定的缓存,当第二次打开该网站的时候,我们就用缓存来替代,这样就大大节省了时间。

对缓存的处理,我们有Expires策略和Cache-Control两种方式,简单来说,Expires策略就是用ETags或者Last-Modifid给文件一个定义缓存结束的时间,写法如下:Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT,这样时间一旦超过这个值,就会自动失效,但是这样有两个弊端,一:还需要服务器发送请求,二:如果客户端定义的时间错误,就会造成缓存失效。对此,h5引入了新的方法:Cache-Control,他直接设定了最大时间寿命Cache-Control: max-age=10000,这样既不需要再向服务器发送请求,也避免了客户端时间设置错误这个弊端,一举两得。

这次总结到此为止,下次再见

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

推荐阅读更多精彩内容