HTTP协议分析系列(八)------http协议缓存详解
来源:互联网 发布:linux自学 带不带桌面 编辑:程序博客网 时间:2024/03/29 05:13
版权声明:本文为博主原创文章,未经博主允许不得转载。
我们观察图片的下载,往往第一次请求时200ok
第二次请求时 304 not modified 未修改状态
解释:在网络上有一些缓存服务器,浏览器自身也有缓存功能。当我们第一次访问某图片时,正常下载图片,返回值200,第二次访问时,基于一个前提--图片不会经常改动
服务器在返回200的同时,还返回该图片的签名--Etag(签名可以理解为图片的指纹).
当浏览器再次访问该图片时,去服务器校验指纹,如果图片没有变化,直接使用缓存中的图片,这样减轻了服务器的负担。
抓包观察:
第一次请求头:
响应头:
第二行的意思是:如果自“Tue,18 Jun 2013 14:04:32 GMT”这个时间点以后,图片修改过,则重新请求,如果该图片最新的签名Etag的值和If-None-Match的值不匹配,则重新请求
第二次的响应信息:
- 如果是304,就意味着浏览器从本地取缓存,节省了图片在网络上传输的时间。
如果网站比较大,有N台缓存服务器,那么这N台缓存服务器缓存主服务器上的文件缓存多久?
1.要不要缓存?
2.缓存多久?
思考------这说明,缓存服务器与主服务器之间,应该有一些协议来说明这些问题
追问------用什么协议来说明这2个问题?
答:还是http协议,用头信息cache-control来控制
具体用法:
在主服务器打开apache 的expire扩展,利用该扩展来控制图片,css,html等文件是否缓存的生存周期。
重启Apache
在.htaccess中,具体语法如下
ExpiresDefault是设置默认的缓存参数
ExpiresByType是按照文件类型来设计独特的缓存参数
我们用第二种来做测试,给jpg图片设置一个月的生存周期
后面4各参数怎么理解?
Base:基于那个时间点来计算缓存有效期
Access/now:基于请求响应的那一瞬间,比如从此瞬间到一个月之后。
Modification:基于被请求文件的最后修改日期来计算,比如被修改后的一周内仍然有效。
Num:是指缓存时间的大小
Type:缓存时间的单位(天)
放在:.htaccess
如果这是在集群环境中,缓存服务器得到此图片,将会认为一个月内有效。
减轻了主服务的负担。
我们能否设置服务器不让用缓存呢?
比如有些个人信息,不允许缓存服务器缓存,必须到服务器去请求
Control-cache:no-store.must-revalidate;//这个控制项不允许缓存,必须到主服务器验证。
可以利用apache的header模块
打开扩展,重启Apache
多次刷新页面发现:
上例可以看出,png格式的图片不允许缓存,因此每次都重新请求
- HTTP协议分析系列(八)------http协议缓存详解
- HTTP协议分析系列(八)------http协议缓存详解
- HTTP协议系列-----------HTTP协议详解
- HTTP协议分析系列(一)------初识HTTP协议
- HTTP协议分析系列(一)------初识HTTP协议
- http协议学习系列(协议详解篇)
- 【http】http协议详解
- HTTP协议分析系列------http协议之refer防盗链
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 【VC++DLL动态链接库编程】教程目录(1)
- 基于Spark Streaming和Spark MLlib实现文本情感分析
- CenOS 6.6 常用命令《三》
- sse指令加速例子-无对比
- 《数学之美》读书笔记(四)
- HTTP协议分析系列(八)------http协议缓存详解
- Openstack L版本的neutron server 启动流程分析(二)
- 火星人家园:太阳能是国有资产吗?
- 【NPM】Packages与Modules
- 【C/C++开发】运算符重载二
- Lua查找表(元表,_index)
- 网页显示不正常怎么修复
- HTTP协议分析系列(九)------http协议与内容压缩
- 设计模式经典书籍推荐