HTTP缓存

来源:互联网 发布:android手机刷linux 编辑:程序博客网 时间:2024/06/16 23:09

最近一直效率不高,希望以后能改正。

1. Web缓存的工作原理

所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改)。这些规则有的在协议中有定义(如HTTP协议1.0和1.1),有的则是由缓存的管理员设置(如DBA、浏览器的用户、代理服务器管理员或者应用开发者)

2.浏览器端的缓存规则

浏览器缓存机制,是一个很大的话题,详见九种浏览器端缓存机制概览 。但其中比较重要的是HTTP协议定义的缓存机制。这些规则是在HTML页面的Meta标签中HTTP协议头中定义的。

2.1 使用HTML Meta 标签

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

上述代码的作用是告诉浏览器当前页面不被缓存,每次访问都需要去服务器拉取。使用上很简单,但只有部分浏览器可以支持,而且所有缓存代理服务器都不支持,因为代理不解析HTML内容本身。
可以通过这个页面测试你的浏览器是否支持:Pragma No-Cache Test

2.2 使用缓存有关的HTTP消息报头

一个URI的完整HTTP协议交互过程是由HTTP请求和HTTP响应组成的。有关HTTP详细内容可参考《HTTP协议详解》
一个缓存GET请求的具体流程如下图(图源于《http权威指南》):
这里写图片描述
总的来说,客户端从服务器请求数据经历如下基本步骤:

  1. 检查是否已缓存:如果请求命中本地缓存则从本地缓存中获取一个对应资源的副本;

  2. 检查这个资源是否新鲜:是则直接返回到客户端,否则继续向服务器转发请求,进行再验证。

  3. 再验证阶段:服务器接收到请求,然后再验证判断资源是否相同,是则返回304 not modified,未变更。

  4. 否则返回新内容和200状态码。 客户端更新本地缓存。

3.具体步骤

Stage1: 检查缓存

Stage2:检查资源是否新鲜

Stage3: 服务器再验证

参考
待续…

如何缓存
浏览器的缓存机制
怎么不发送请求,就能使用缓存
浏览器如何实现图片缓存
浏览器缓存种类、区别与使用细节

原创粉丝点击