关于缓存的tips——HTTP权威指南读书心得(十三)
上一章介绍了缓存新鲜度判断的基本原理,本章对于缓存新鲜度判断方法进行一些补充(更新间隔略长略长。。)。
关于缓存的TIPS
服务器可以通过http定义的几种header对可以缓存数据的存在时间进行控制,按照其优先级由高到低分别为:
- Cache-Control:no-store
- Cache-Control:no-cache
- Cache-Control:must-revalidata
- Cache-Control: max-age=
- Expires:{date}
- 不附加任何信息
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: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权威指南读书心得(十三)的更多相关文章
- [原创]Java性能优化权威指南读书思维导图
[原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt Binu John 译者: 柳飞 ...
- [原创]Java性能优化权威指南读书思维导图4
[原创]Java性能优化权威指南读书思维导图4
- [原创]Java性能优化权威指南读书思维导图3
[原创]Java性能优化权威指南读书思维导图3
- [原创]Java性能优化权威指南读书思维导图2
[原创]Java性能优化权威指南读书思维导图2
- HTTP权威指南读书笔记
HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...
- [置顶] PHP开发实战权威指南-读书总结
从今年开始,断断续续学习PHP已经有4个月了. 最初,认真学习PHP几天,就弄WordPress搭建了一个个人博客,这也符合技术人的实践理念. 最近,重温PHP开发实战权威指南,做点总结,整理下自己学 ...
- 经典的性能优化最佳实践 web性能权威指南 读书笔记
web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...
- PHP开发实战权威指南-读书总结
从今年开始,断断续续学习PHP已经有4个月了.最初,认真学习PHP几天,就弄WordPress搭建了一个个人博客,这也符合技术人的实践理念. 最近,重温PHP开发实战权威指南,做点总结,整理下自己学习 ...
- Tomcat权威指南-读书摘要系列2
2. 配置Tomcat 2.1. 重定向Web应用程序的目录 将工程文件与Tomcat分离 复制conf和webapps文件夹到分离目录: 配置CATALINA_BASE环境变量,值为分离目录: 2. ...
随机推荐
- 使用GitHub For Windows托管Visual Studio项目
本文写得比较早,更新的在VS上使用GitHub的文章请移步:Visual Stuido 2015 Community 使用 GitHub 插件 因为最近同时再看很多技术方面的书,书上的例子有很多自己想 ...
- NPOI_2.1.3-Excel中设置小数、百分比、货币、日期、科学计数法和金额大写
在操作Excel时候一些特殊值的转换是在所难免的,下面就给出转换方法大同小异,代码如下: HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); ISheet ...
- QT5.0.1在Windows下 出现QApplication: No such file or directory 问题的解决办法
第一个Qt 程序 环境window ,ide qt creator 新建一个 C++ 项目 > 新建一个main.cpp 输入如下代码 #include<QApplication> ...
- jquery中的 .html(),.val().text()
.html(),.text(),.val(),.html()用为读取和修改元素的HTML标签,包括标签内的内容.text()用来读取或修改元素的纯文本内容,去除 html 标签.val()用来读取或修 ...
- c#集合解析
什么是集合(collection)? 提供了一种结构化组织任意对象的方式,从.NET 的角度看,所谓的集合可以定义为一种对象,这种对象实现一个或者多个System.Collections.IColle ...
- margin系列之内秀篇
本系列摘自 飘零雾雨的博客 最Cool的利器 一样东西在不同的场景,不同的人手里,所能做的事会有很大不同.我深切的以为 margin 绝对是 CSS 中最有能力的利器之一,不知大家以为然否? 前面几 ...
- 回顾javase点滴
数据类型 8种基本数据类型和引用类型 数据类型 占用位数 存储方式 最小值 最大值 默认值 byte 8 1+7 -128(-2^7) 127(2^7-1) 0 short 16 1+15 -3276 ...
- Lighttpd日志打印格式
检查lighttpd打印的日志时,有些字段意义模糊,就找了个对照说明,备份一下 原文地址:http://redmine.lighttpd.net/projects/1/wiki/Docs_ModAcc ...
- Redis — CentOS6.4安装Redis以及安装PHP客户端phpredis
一.安装Redis 1.下载安装包 wget http://download.redis.io/releases/redis-2.8.6.tar.gz 2.解压包 tar xzf redis-2.8. ...
- 【web安全】第一弹:利用xss注入获取cookie
首先一定要先来吐槽一下tipask系统.这是一枚开源的类似百度知道的系统,但是漏洞多多,最基本的XSS注入都无法防御. 言归正传: [准备1] cookie接收服务器. 平时喜欢用sae,所以在sae ...