课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存功能的应用在许多软件开发项目中是必不可少的一个编程组件,而本文我们就通过案例分析来简单了解一下,HTTP缓存规则都有哪些要求。
简介
http缓存是一种客户端缓存,当Web浏览器向服务器发起资源请求时,服务器可以在响应报文头中包含缓存相关的信息。这些HTTPHeader会告诉浏览器是否以及如何缓存资源,再次请求时如果命中缓存将直接读取本地缓存不再发出请求。
缓存规则
http缓存规则由响应头中Expires,Cache-Control,Last-Modified,Etag这四个关键字段控制。其中Expires和Cache-Control为强缓存用来确定确定缓存的存储时间,Last-Modified和Etag为协商缓存则用来确定缓存是否要被更新,接下来我们简单来看一下区别。
强缓存
•expires:HTTP1.0中用来控制缓存时间的参数,header里包含日期/时间,用GMT格式的字符串表示,即在此时间之后,响应过期。
•cache-control:HTTP1.1中用来控制缓存时间的参数
◦public:表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存。
◦private:表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器例如CDN不能缓存它)。
◦max-age=:设置缓存存储的大周期,相对于请求的时间缓存seconds秒,在此时间内,访问资源直接读取本地缓存,不向服务器发出请求。(与expires同时出现时,max-age优先级更高)
◦s-maxage=:规则等同max-age,覆盖max-age或者Expires头,但是仅适用于共享缓存(比如各个代理),并且私有缓存中它被忽略。(与expires或max-age同时出现时,s-maxage优先级更高)
◦no-store:不缓存服务器响应的任何内容,每次访问资源都需要服务器完整响应
◦no-cache:缓存资源,但立即过期,每次请求都需要跟服务器对比验证资源是否被修改。(等同于max-age=0)
协商缓存
•Last-modified:源头服务器认定的资源做出修改的日期及时间。精确度比Etag低。包含有If-Modified-Since(资源修改的时间)或If-Unmodified-Since部的条件请求会使用这个字段,Last-Modified优先级低于Etag。
•Etag:HTTP响应头是资源的特定版本的标识符,如果客户端想再次请求相同的URL,将会发送一个包含已保存的ETag和“If-None-Match”(标识符字符串)字段的请求。客户端请求之后,服务器可能会比较客户端的ETag和当前版本资源的ETag(只要文件内容改动,ETag就会重新计算)。如果ETag值匹配,这就意味着资源没有改变,服务器便会发送回一个极短的响应,包含HTTP“304未修改”的状态。304状态告诉客户端,它的缓存版本是新的,并应该使用它。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。