本篇内容主要讲解“http缓存技术的原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“http缓存技术的原理”吧!
HTTP缓存实现的原理
浏览器是如何知道使用缓存的,其实这都是通过http中,浏览器将最后修改时间发送请求给web服务器,web服务器收到请求后跟服务器上的文档最后修改的时间对比,如果web服务器上最新文档修改时间小于或者等于浏览器发送过来的,则发送304给浏览器,使用缓存版本。
引用>缓存的概念
缓存这个东西真的是无处不在,有浏览器端的缓存,有服务器端的缓存,有代理服务器的缓存,有ASP。净页面缓存,对象缓存。数据库也有缓存,等等。
http中具有缓存功能的是浏览器缓存,以及缓存代理服务器。
http缓存的是指:当网络请求抵达缓存时,如果本地有“已缓存的“副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。
缓存的好处
缓存的好处是显而易见的,好处有,
1. 减少了冗余的数据传输,节省了网费。
2. 减少了服务器的负担,大大提高了网站的性能
3.加快了客户端加载网页的速度
提琴手可以方便地查看缓存的头
提琴手中把标题都分门别类的放在一起,这样方便查看。
如何判断缓存新鲜度
Web服务器通过2种方式来判断浏览器缓存是否是最新的。
第一种,浏览器把缓存文件的最后修改时间通过标题“if - modified - since”来告诉Web服务器。
第二种,浏览器把缓存文件的ETag,通过标题“If-None-Match",来告诉Web服务器。
通过最后修改时间,来判断缓存新鲜度
1. 浏览器客户端想请求一个文档,,首先检查本地缓存,发现存在这个文档的缓存,,获取缓存中文档的最后修改时间,通过:if - modified - since,发送请求给Web服务器。
2. Web服务器收到请求,将服务器的文档修改时间(last - Modified):跟请求报头中的,if - Modified - since相比较,如果时间是一样的,说明缓存还是最新的,Web服务器将发送304 Not Modified给浏览器客户端,告诉客户端直接使用缓存里的版本。如下图。
3.假如该文档已经被更新了对了web这类服务器将发送该文档的最新版本给浏览器客户端,如下图。
实例:打开提琴手,然后打开博客园首页。然后F5刷新几次浏览器。你会看到博客园首页也用了缓存。
与缓存有关的头
我们来看看每个标题的具体含义。
请求
cache - control:信息=0 以秒为单位 if - modified - since:星期一,2012年11月19日08:38:01格林尼治时间 缓存文件的最后修改时间。 具有:“0693 f67a67cc1:0" 缓存文件的Etag值 cache - control: no - cache 不使用缓存 编译指示:no - cache 不使用缓存 , ,响应
cache - control:公共 响应被缓存,并且在多用户间共享,,(公有缓存和私有缓存的区别,请看另一节) cache - control:私人 响应只能作为私有缓存,不能在用户之间共享 cache - control: no - cache 提醒浏览器要从服务器提取文档进行验证 cache - control:不是商店 绝对禁止缓存(用于机密,敏感文件) cache - control:信息=60 60秒之后缓存过期(相对时间) 日期:2012年11月19日,星期一,08:39:00格林尼治时间 当反应前发送的时间 到期:星期一,2012年11月19日08:40:01格林尼治时间 缓存过期的时间(绝对时间) 最后修改:星期一,2012年11月19日08:38:01格林尼治时间 服务器端文件的最后修改时间 ETag:“20 b1add7ec1cd1:0" 服务器端文件的Etag值如果同时存在cache - control和到期怎么办呢?
http缓存技术的原理