理解与客户端缓存之协计划

除锈机砖机设备2021年09月06日

前言

这个系列的文章要讨论的是如何通过服务器端技术来优化客户端缓存策略,而且让这种策略变得可配置和可扩展。我们要了解的知识从HTTP协议中相关属性对客户端缓存的影响,到如何控制这些属性来实现我们的缓存策略。

北京市发改委有关人士表示 HTTP基础知识

由于讨论涉及到客户端缓存,所以还是先要简单介绍一下HTTP协议是如何控制客户端缓存的,这里涉及到HTTP头的Last-Modified、ETag等属性。

Last-Modified

在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:

Last-Modified: Fri, 12 May 2006 18:53:33 GMT

客户端第二次请求此URL时,会在头部加入一个属性,询问该时间之后文件是否有被修改过:

If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT

如果服务器端的文件没有被修改过,则返回状态是304,内容为空,这样就节省了传输数据量。如果服务器端的文件被修改过,则返回和第一次请求时类似。

ETag

和Last-Modified类似,由于RFC2616(也就是HTTP/1.1)中没有说明ETag该是什么格式的,只要确保用双引号括起来就行了,所以你可以用文件的hash,甚至是直接用Last-Modified,以下是服务器端返回的格式:

ETag: \"50b1c1d4f775c61:df3\"

客户端的查询更新格式是这样的:

If-None-Match: W/\"50b1c1d4f775c61:df3\"

如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。

Expires

这个属性就如我们在ASP中使用piresAbsolute一样直接,声明某某时刻过期之后浏览器就应该重新请求该URL,使用格式为:

Expires: Sun, 10 Feb 2002 16:00:00 GMT

注意piresAbsolute在中是不建议使用的,现在我们应该使用的是tExpires。

Pragma

通常我们用到的值就是no-cache,这和在Cache-Control中使用no-cache值是一样的,Cache-Control在下面讲。Pragma的使用格式如下:

Pragma: no-cache

Cache-Control

这是一个集合型属性,它里面能够包含很多子属性,并且允许用户扩展新的子属性。常见的子属性包括:

max-age - 以秒为单位的超时,覆盖Expires属性。

public - 允许保存在共享缓存中。

private - 只允许保存在私有缓存中。

no-cache - 不允许缓存。

no-store - 不允许缓存在持久介质中。

no-transform - 不允许转换存储系统。查看本文来源

昆明哪医院治疗白癜风好
肾功能不全高血压症状
贵阳盆腔炎治疗多少钱
相关阅读
在《单纯的世界》中,相较于孙少安,李向前或是润叶最合适的归宿

引言 极好的真真爱是双向随同。无论是在穷困还是小话说影视中都,我们所...

2023-09-21
兴证策略:A股全景 个人风格与估值

核心结论 ★当今世界股市:理论上所美股从买卖滞涨日益过渡至买卖衰落,...

2023-09-12
广东附属医院大学:赞!一“研”为定,全寝上岸

汾州小学堂 “工”个数住宿 佛山药学该大学汾州小学堂4-302住宿全体考工登...

2023-09-08
北京近期48例感染者住址工作地位置图简述

来源:北京日报 ▼ ▼ 北京卫健委:禁止在养老院太平间卓有成效营利性殡...

2023-09-05
本泽马强势竞争金球奖!他不仅有哈维的数据,还有哈维的情商!

原创 4月27日,欧联半决赛首首回合,韦根4比3击败国际米兰。韦根浪费了大...

2023-09-03
《西游记》之前,大闹天宫的有三人,被镇压的却只有孙悟空一个

众所周知,在历史小说《西游记》当中,悟空一生最光彩的时刻正因如此他大...

2023-09-01
友情链接