上一章介绍了缓存新鲜度判断的基本原理,本章对于缓存新鲜度判断方法进行一些补充(更新间隔略长略长。。)。

          关于缓存的TIPS

  服务器可以通过http定义的几种header对可以缓存数据的存在时间进行控制,按照其优先级由高到低分别为

  1. Cache-Control:no-store
  2. Cache-Control:no-cache
  3. Cache-Control:must-revalidata
  4. Cache-Control:  max-age=
  5. Expires:{date}
  6. 不附加任何信息

  Cache-Control:no-store 首部会禁止缓存对于响应进行复制,响应由服务器回送出,然后由缓存转发到客户端,转发完毕后会把缓存上的响应副本删除。

  Cache-Control:no-cache 实际上是允许响应缓存在本地缓存中的,只不过要使用缓存中的文件,则必须与原始服务器通信,验证缓存内容是否足够新鲜。如果足够新鲜才可以会送给客户端使用。

  Cache-Control:must-revalidata 有些缓存为了提高性能,会选择性的向客户端提供一些过期的数据。must-revalidata首部告诉缓存,如果要提供过期的数据给客户端,则必须向服务器验证数据的新鲜度,验证通过才可以使用过期的数据。缓存可以自由的向客户端提供新鲜的数据

  Cache-Control:max-age 该首部表示从服务器将数据传输过来的时间点起,可以认为该数据新鲜的秒数。服务器可以将max-age设置为0,从而让每次访问时缓存都进行刷新。

    Cache-Control:max-age=0

  Expires:{date} 该首部直接设置缓存的过期日期。由于很多服务器的时钟都不同步,使用绝对的时间点设置过期时间可能出现问题。

          客户端控制缓存新鲜度

  浏览器都有刷新或者重载按钮,可以强制浏览器或者代理缓存对可能过期的内容进行刷新。刷新按钮会在请求header中加入Cache-Control首部,这个请求会强制进行再验证,或者直接从原始服务器获取资源。刷新的确切行为会依浏览器类型而不同。

客户端Cache-Control请求指令
Cache-Control:max-stable={s} 缓存可以随意提供过期的数据,如果指定了{s},则告知缓存在{s}这个时间段内,数据不能过期。
Cache-Control:mini-fresh={s} 至少在未来{s}秒内,缓存提供的数据必须是新鲜的。
Cache-Control:max-age={s} 缓存不可以返回缓存时间超过{s}秒的数据。
Cache-Control:no-cache 客户端只接受进行过新鲜度再验证的缓存数据或者直接从服务器返回的数据。
Cache-Control:no-store 缓存应该删除所有客户端相关的缓存数据。
Cache-Control:only-if-cached 只有缓存中有数据副本,客户端才会获取一份副本。

    

         HTML中的HTTP-EQUIV

  为了让方便在网站项目中控制缓存,HTML提供了<META HTTP-EQUIV>标签,这个标签可以设置与文档有关的header。

  

 <HTML>
<HEAD>
<TITLE>TEST</TITLE>
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
</HEAD>
......

  该标签可以在请求中插入一个首部字段,首部名称由属性HTTP-EQUIV 设置,首部内容由CONTENT设置。

  这个标签让我们可以让我们在页面中方便的设置响应首部,但是由于解析这个元素会给服务器增加额外的负担,所以只有很少web服务器和代理支持这个特性。因此,不建议通过设置这个标签来控制缓存,正确的配置header中的字段才是可靠的缓存控制方法。

  

  

关于缓存的tips——HTTP权威指南读书心得(十三)的更多相关文章

  1. [原创]Java性能优化权威指南读书思维导图

    [原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt    Binu John 译者: 柳飞 ...

  2. [原创]Java性能优化权威指南读书思维导图4

    [原创]Java性能优化权威指南读书思维导图4

  3. [原创]Java性能优化权威指南读书思维导图3

    [原创]Java性能优化权威指南读书思维导图3

  4. [原创]Java性能优化权威指南读书思维导图2

    [原创]Java性能优化权威指南读书思维导图2

  5. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  6. [置顶] PHP开发实战权威指南-读书总结

    从今年开始,断断续续学习PHP已经有4个月了. 最初,认真学习PHP几天,就弄WordPress搭建了一个个人博客,这也符合技术人的实践理念. 最近,重温PHP开发实战权威指南,做点总结,整理下自己学 ...

  7. 经典的性能优化最佳实践 web性能权威指南 读书笔记

    web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...

  8. PHP开发实战权威指南-读书总结

    从今年开始,断断续续学习PHP已经有4个月了.最初,认真学习PHP几天,就弄WordPress搭建了一个个人博客,这也符合技术人的实践理念. 最近,重温PHP开发实战权威指南,做点总结,整理下自己学习 ...

  9. Tomcat权威指南-读书摘要系列2

    2. 配置Tomcat 2.1. 重定向Web应用程序的目录 将工程文件与Tomcat分离 复制conf和webapps文件夹到分离目录: 配置CATALINA_BASE环境变量,值为分离目录: 2. ...

随机推荐

  1. session绑定线程

  2. ASP.NET 优化 check list

    看到一个蛮有意思的网站,里面有针对asp.net方方面面优化的罗列: 点击打开链接http://webdevchecklist.com/asp.net/performance/ 点击打开链接http: ...

  3. CentOS 6.4 64位 安装 jdk 6u45

    准备: 1.下载历史版本jdk 地址: http://java.sun.com/products/archive/ 下载的版本 jdk-6u45-linux-x64-rpm.bin  Linux x6 ...

  4. .net生成随机验证码图片

    /// <summary> /// 自定义图片验证码函数 /// 该函数将生成一个图片验证码,并将生成的code存放于Session["VerifyCode"]变量内. ...

  5. centos 基本操作(输入法安装,adls宽带连接,查找文件,模拟终端)

    centos 基本操作之输入法安装输入法启动终端,切换到超级管理员yum install "@Chinese Support"安装成功后,退出System->Preferen ...

  6. Nigix快速上手注意事项

    linux下,主要关于配置,包括主从,待续......

  7. angular.js的post数据方式

    公司的项目前端部分现在改用angular,一切从头学起,今天记录一下关于数据请求的问题,由于get的请求方式比较简单,与post也类似,所以就单独讲讲post方式. 文档上post数据的写法有好几种, ...

  8. 关于DPC和workitem的简单用法

    这个随笔是记录我半个月左右的时间,从想法到查资料请教,以及到实践的成果. 我想实现的是,隔定时时间写文件,本以为调用写的函数就可以实现了,结果各种BSOD,IRQL_NOT_LESS_OR_EQUAL ...

  9. Pentaho Data Integration Step: BD Procedure Call

    官网连接:http://wiki.pentaho.com/display/EAI/Call+DB+Procedure 描述 调用数据库存储过程步骤允许用户执行一个数据库存储过程,并且得到结果.存储过程 ...

  10. 【POJ 2152】 Fire (树形DP)

    Fire   Description Country Z has N cities, which are numbered from 1 to N. Cities are connected by h ...