http缓存(http caching)
通过使用缓存web网站和web应用的性能能够得到显著的提升。Web caches能够减小延迟和网络流量,从而缩短展示资源所花费的时间。
在http中控制缓存行为的首部字段是Cache-Control,Cache-Control可以有多个指令,指令之间用逗号分割。Cache-Control是通用首部字段,它即能出现在响应头中也能出现在请求头中
一.缓存请求指令
- Cache-Control: max-age=<seconds>
- Cache-Control: max-stale[=<seconds>]
- Cache-Control: min-fresh=<seconds>
- Cache-Control: no-cache
- Cache-Control: no-store
- Cache-Control: no-transform
- Cache-Control: only-if-cached
二.缓存响应指令
- Cache-Control: must-revalidate
- Cache-Control: no-cache
- Cache-Control: no-store
- Cache-Control: no-transform
- Cache-Control: public
- Cache-Control: private
- Cache-Control: proxy-revalidate
- Cache-Control: max-age=<seconds>
- Cache-Control: s-maxage=<seconds>
三.指令介绍
1.与缓存能力相关的指令
1.public:指明任何缓存区都能够缓存响应
2.private:指明响应是针对单一用户的,不能存储在共享缓存区中,只有私有缓存区能存储响应
3.no-cache:在使用缓存资源之前要向源服务器验证缓存的有效性
4.only-if-cached:指明客户端只想从缓存中获取响应,不需要与源服务器联系确定资源是否更新

2.与到期时间相关的指令
1.max-age=<seconds>:指定资源被视为有效的最大时间量,单位为秒
2.s-maxage=<seconds>:与max-age=<seconds>指令的作用相似,但是它只对共享缓存有效,对私有缓存无效
3.max-stale[=<seconds>]:即使缓存资源过期客户端还是接受缓存区中的资源。如果未指定数值,那么无论过期多久,客户端都接受缓存区中的响应,如果指定了具体数值,那么即使过期,只要处于max-stale指定的时间内,客户端还是接受缓存区中的资源
4.min-fresh=<seconds>:表明从缓存区中返回未过指定时间的缓存资源
5.stale-while-revalidate=<seconds>:指示客户端愿意接受一个过期的响应,同时在后台异步检查一个新的响应。秒值表示客户机愿意接受过期响应的时间。
6.stale-if-error=<seconds>:如果检查新资源失败,客户端愿意接受过期的资源。秒值指示客户端在初始过期后愿意接受过期响应的时间。

3.与重新验证和重新加载相关的指令
1.must-revalidate:在使用过期的缓存资源之前,必须向源服务器确认缓存资源的状态并且不会使用过期的资源。它会忽略max-stale[=<seconds>]指令
2.proxy-revalidate:和must-revalidate作用类似,但是它只应用于共享缓存,会被私有缓存忽略
3.immutable:指明在任何时候都不能改变响应体
4.其他指令
1.no-store:不缓存请求和响应中的任何内容
2.no-transform:缓存不能改变请求和响应中的任何实体主体(The Content-Encoding, Content-Range, Content-Type 头部字段不能被修改)
http缓存(http caching)的更多相关文章
- 函数缓存 (Function caching)
函数返回值缓存是优化一个函数的常用手段.我们可以将函数.输入参数.返回值全部保存起来,当下次以同样的参数调用这个函数时,直接使用存储的结果作为返回(不需要重新计算). 函数缓存允许我们将一个函数对于给 ...
- spring中的缓存--Caching
1.spring从3.1开始支持缓存功能.spring 自带的缓存机制它只在方法上起作用,对于你使用其他持久化层的框架来讲,是没有影响的,相对来讲这种缓存方式还是不错的选择. 2.提供缓存的接口:or ...
- C# - 缓存OutputCache(二)缓存详细介绍
本文是通过网上&个人总结的 1.缓存介绍 缓存是为了提高访问速度,而做的技术. 缓存主要有以下几类:1)客户端缓存Client Caching 2)代理缓存Proxy Caching 3)方向 ...
- 前端学HTTP之缓存
前面的话 Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关内容 功能 ...
- .Net环境下的缓存技术介绍 (转)
.Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 ...
- .Net环境下的缓存技术介绍
.Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 1.1 ...
- Java8简单的本地缓存实现
原文出处:lukaseder Java8简单的本地缓存实现 这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存.因为Map有一个新的方法,在 ...
- ASP.NET MVC 数据库依赖缓存的实现
当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础.应用程序可以通过轮询获取数据变化的信息,使用轮询的话也不可能重新查一次后再和以前的数据做比较,如果这样的话如果我一个 ...
- asp.net mvc 缓存
webConfig 里面配置缓存时间 <caching> <outputCacheSettings> <outputCacheProfiles> <add n ...
随机推荐
- 安卓和IOS兼容问题
点击穿透 click延迟 scroll元素临界的bug android screen.w/h 不准 rem不准 scroll时动画失效 animate回调 最小字号限制 不同机型全屏自适应 andro ...
- matlab文件读写处理实例(二)——textread批量读取文件
问题:对文件夹下所有文件进行批量读取,跳过文件头部分,读取每个文件数据部分的7,8,9列,保存到变量并且输出到文件. 数据: 文件夹11m\
- 为什么.Net平台不支持程序集卸载(Assembly.Unload)?
我们知道在.net平台中反射提供了在运行时动态的获得程序或程序集中每一个类型(包括类.结构.委托.接口和枚举等)的成员和成员的信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象.我们知道 ...
- Java - 双冒泡法排序
最开始的代码 我采用的是我原来进行快速排序所用的方法,一直做不出来. 为什么我会采用原来快速排序的方法?因为我的记忆中好像就是这样的,因此我根据记忆中的快速排序在进行改变,然而,却无法真正的写出双冒泡 ...
- js基本语法与变量
1.//声明变量,js是弱类型语言,变量类型声明示没有意义的.变量类型是随时可以变化的.var a = 1; a = "haha"; a = false;2.注释与 ...
- Tomcat+Servlet面试题都在这里
下面是我整理下来的Servlet知识点:  图上的知识点都可以在我其他的文章内找到相应内容. Tomcat常见面试题 Tomcat的缺省端口是多少,怎么修改 Tomcat的缺省端口是多少,怎么修改 ...
- 关于HTTP GET & POST的区别(转)
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE. URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTT ...
- 编译安装 python 2.7
下载python2.7 Python-2.7.6.tgz 下载链接:http://pan.baidu.com/s/1c0AJDDI 配置./configure 编译make 安装 make insta ...
- Kafka Consumer
Push VS Pull An initial question we considered is whether consumers should pull data from brokers or ...
- BZOJ 3551: [ONTAK2010]Peaks加强版 [Kruskal重构树 dfs序 主席树]
3551: [ONTAK2010]Peaks加强版 题意:带权图,多组询问与一个点通过边权\(\le lim\)的边连通的点中点权k大值,强制在线 PoPoQQQ大爷题解传送门 说一下感受: 容易发现 ...