一:HTTP协议缓存控制

第1次请求时 200 ok

第2次请求时 304 Not Modified 未修改状态
解释: 在网络上,有一些缓存服务器,另, 浏览器自身也有缓存功能.
当我们第一次某图片时,正常下载图片,返回值200
基于一个前提--图片不会经常改动, 服务器在返回200的同时,还返回该图片的”签名”-- Etag  ,(签名可以理解图片的”指纹”).
当浏览再次访问该图片时,去服务器校验”指纹”,
如果图片没有变化,直接使用缓存中的图片,这样减轻了服务器负担.
二:抓包观察分析

三:HTTP协议与缓存控制

如果网站比较大,有N台缓存服务器,那么这N台缓存服务器,如何处理主服务器上文件,

1:要不要缓存

2:缓存多久?

思考----这说明 缓存服务器与主服务器之间,应该有一些协议,来说明这2个问题?

追问----用什么协议来说明这2个问题?

答 -----还是http协议,用头信息 cache-control来控制

具体用法:

在主服务器, 打开apache的 expires扩展,利用该扩展来控制图片,css,html等文件

控制是否缓存,及缓存生命周期.

在.htaccess中,具体语法如下:

ExpiresDefault "<base> [plus] {<num> <type>}*"
ExpiresByType type/encoding "<base> [plus] {<num>
<type>}*"

ExpiresDefault 是设置默认的缓存参数

ExpiresByType 是按照文件类型来设计独特的缓存参数

我们用第2种来做测试,给jpg图片设置1个月的生存周期.

后面4个参数怎么理解?

Base : 基于哪个时间点来计算缓存有效期

Access/now : 基于请求/响应的那一瞬间,比如从此瞬间到1个月之后.

Modification:
基于被请求文件的最后修改日期来计算. 比如 最后修改日期的后1周内仍然有效.

Num:
缓存时间的大小  (30)

Type:
缓存时间的单位  (天)

实例:


如果这是在集群环境里, 缓存服务器得到此图片,将会认为一个月内有效.

减轻了主服务器负担.

我们能否设置服务器,不让用缓存呢?

比如有些个人信息同,不允许缓存服务器缓存,必须到主服务器去请求.

Control-cache: no-store,must-revalidate ; // 这意味着不允许缓存,必须去主服务器验证.

可以利用apache的header模块



最新文章

  1. .net C# SqlHelper for Oracle
  2. SharePoint Calculated Columns 分类: Sharepoint 2015-07-09 01:49 8人阅读 评论(0) 收藏
  3. JSPatch – 动态更新iOS APP
  4. Java面试题技术类一
  5. 理解SQL Server是如何执行查询的 (3/3)
  6. 菜鸟成长进阶之——fiddler使用总结
  7. tp_link路由器 重新设置
  8. 优化后的二次测试Miller_Rabin素性测试算法
  9. Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
  10. 集群中用Memcached来实现session共享
  11. fs/ext2/inode.c相关函数注释
  12. OpenResty 反向代理的用法与技巧
  13. 使用XmlPullParser对xml进行读取
  14. Django基本操作命令
  15. Mysql DOC阅读笔记
  16. ALV前导零的问题
  17. Modbus通信协议详解
  18. Django auth认证系统
  19. form表单数据进行json转换
  20. JAVA基础3---运算符大全

热门文章

  1. java maven项目testng执行时使用的是test-classes下的文件,共享main下方resource的配置
  2. 浅谈Linux下的五种I/O模型 两篇别人的博客
  3. ubuntu16.04下安装wine1.8.2
  4. C# Array类的浅复制Clone()与Copy()的区别
  5. sql server 2008导入和导出sql文件
  6. AC日记——线段树练习4 codevs 4919
  7. 001为什么Linux使用~作为家目录?为什么vim用hjkl作为方向键?
  8. ML | PCA
  9. C# Http方式下载文件到本地
  10. react 自定义 TabBar 组件