首页 建站经验 正文

CDN之浏览器 HTTP 协议缓存机制详解

时间:2024-10-16 06:35 作者:80590网站大全 阅读:4 次

前言最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache-control、为什么明明设置了 no-cache 却还是发请求,为什么多次访问时有时请求里带了 etag,有时又没有带?等等。。。后来查了一些资料以及同事亲自验证,总算对这些问题有了个清晰的理解,现在整理出来以备忘。大纲:1、缓存的分类2、浏览器缓存机制详解2.1 HTML Meta标签控制缓存2.2 HTTP头信息控制缓存2.2.1 浏览器请求流程2.2.2 几个重要概念解释3、用户行为与缓存4、Refer缓存的分类缓存分为服务端侧(server side,比如 Nginx、Apache)和客户端侧(client side,比如 web browser)。服务端缓存又分为 代理服务器缓存 和 反向代理服务器缓存(也叫网关缓存,比如 Nginx反向代理、Squid等),其实广泛使用的 CDN 也是一种服务端缓存,目的都是让用户的请求走”捷径“,并且都是缓存图片、文件等静态资源。客户端侧缓存一般指的是浏览器缓存,目的就是加速各种静态资源的访问,想想现在的大型网站,随便一个页面都是一两百个请求,每天 pv 都是亿级别,如果没有缓存,用户体验会急剧下降、同时服务器压力和网络带宽都面临严重的考验。浏览器缓存机制详解浏览器缓存控制机制有两种:HTML Meta标签 vs. HTTP头信息。2.1 HTML Meta标签控制缓存浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如:Expires;Cache-control等)。但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以在HTML页面的<head>节点中加入<meta>标签,代码如下:<META HTTP-EQUIV="Pragma" CONTENT="no-cache">上述代码的作用是告诉浏览器当前页面不被缓存,每次访问都需要去服务器拉取。使用上很简单,但只有部分浏览器可以支持,而且所有缓存代理服务器都不支持,因为代理不解析HTML内容本身。而广泛应用的还是 HTTP头信息 来控制缓存,下面我主要介绍HTTP协议定义的缓存机制。2.2 HTTP头信息控制缓存2.2.1 浏览器请求流程浏览器第一次请求流程图:浏览器再次请求时:2.2.2几个重要概念解释Expires策略:Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。不过Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1,所以它的作用基本忽略。Expires 的一个缺点就是,返回的到期时间是服务器端的时间,这样存在一个问题,如果客户端的时间与服务器的时间相差很大(比如时钟不同步,或者跨时区),那么误差就很大,所以在HTTP 1.1版开始,使用Cache-Control: max-age=秒替代。Cache-control策略(重点关注):Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。(1)值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age(2)各个消息中的指令含义如下:(3)Public指示响应可被任何缓存区缓存。(4)Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。(5)no-cache指示请求或响应消息不能缓存,该选项并不是说可以设置”不缓存“,容易望文生义~(6)no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存,完全不存下來。(7)max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。(8)min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。(9)max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

共收录0个网站,0个公众号,0个小程序,0个资讯文章,0个微信文章
首页 关于我们 联系我们 收录标准 广告合作 免责声明 友情链接 网站地图
点击收藏小提示:按键盘CTRL+D也能收藏哦!

本站声明:本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,分类目录网不承担任何责任。在此特别感谢您对分类目录网的支持与厚爱!
CopyRight © 2009-2021 80590.Com All Rights Reserved. 80590网址大全版权所有

网站目录 公众号 小程序 室内设计网

黔ICP备19007148号-13