HTTP header中的Cache-control

转载 2015年07月10日 14:47:32


Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires

 


一、HTTP header中Cache-control的值


Cache-Control的值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age


含义如下


1、Public:指示响应可被任何缓存区缓存,如果响应被标记为public,即使有关联的 HTTP 认证,甚至响应状态码无法正常缓存,响应也可以被缓存。
 

2、Private:指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

3、no-cache:表示必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。因此,如果存在合适的验证令牌 (ETag),no-cache 会发起往返通信来验证缓存的响应,如果资源未被更改,可以避免下载。
 

4、no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。禁止缓存任何响应,也就是说每次用户请求资源时,都会向服务器发送一个请求,每次都会下载完整的响应。
 

5、max-age:用来设置资源被缓存的最长时间(单位是秒)。指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

6、min-fresh:指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

7、max-stale:指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

 

例如

web服务器返回的Cache-Control头的值为max-age=300,即5分钟




二、浏览器缓存机制的设置注意事项



1、使用一致的网址:如果在不同的网址上提供相同的内容,那么将会多次获取和存储相同的内容。提示:网址是区分大小写的!

2、保服务器提供验证码 (ETag):通过验证码,如果服务器上的资源未被更改,就不必传输相同的字节。

3、确定代理缓存可以缓存哪些资源:对所有用户的响应完全相同的资源很适合由 CDN 或其他代理缓存进行缓存。

4、定每个资源的最优缓存周期:不同的资源可能有不同的更新要求。审查并确定每个资源适合的 max-age。

5、确定网站的最佳缓存层级:对 HTML 文档组合使用包含内容指纹码的资源网址以及短时间或 no-cache 的生命周期,可以控制客户端获取更新的速度。

6、动最小化:有些资源的更新比其他资源频繁。如果资源的特定部分(例如 JavaScript 函数或一组 CSS 样式)会经常更新,应考虑将其代码作为单独的文件提供。这样,每次获取更新时,剩余内容(例如不会频繁更新的库代码)可以从缓存中获取,确保下载的内容量最少。




参考资料:  HTTP header中Cache-control的介绍    http://www.studyofnet.com/news/935.html


header中的Cache-control

网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据...
  • ivan820819
  • ivan820819
  • 2010年03月25日 15:39
  • 5225

HTTP头的Expires与Cache-control区别

HTTP头的Expires与Cache-control区别http://a18zhizao.com/y2010/1338_http-header-expires-and-cache-control.h...
  • xcyuzhen
  • xcyuzhen
  • 2011年04月18日 00:34
  • 3475

http header cache-control (request和response区别)

摘要:(1)网络服务会根据 request的header中的 cache-control策略设置response的cache-control策略 1 response cache-control 和...
  • crazyhacking
  • crazyhacking
  • 2015年03月20日 21:06
  • 8007

HTTP协议探索之Cache-Control

Cache-Control指定了请求和响应遵循的缓存机制。好的缓存机制可以减少对网络带宽的占用,可以提高访问速度,提高用户的体验,还可以减轻服务器的负担。 Cache-Control主要有以...
  • czw2010
  • czw2010
  • 2014年02月04日 21:17
  • 28446

header中的Cache-control参数说明

refresh_pattern指令如下: 看论坛有人出现一个问题,就是当 Expires 设置为 60 秒以内时都不会 Cache ,但当设置成 61 秒时就能 Cache。 其实这不...
  • joeyon
  • joeyon
  • 2015年01月05日 09:44
  • 1531

HTTP header中的 Cache-control

Cache-control常见的取值有private、no-cache、max-age、must-revalidate等网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取...
  • phphot
  • phphot
  • 2008年11月21日 01:19
  • 731

HTTP header中的Cache-Control

网页的缓存是由HTTP消息头中的“Cache-Control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据...
  • ppiao1970hank
  • ppiao1970hank
  • 2011年02月22日 09:30
  • 613

header(头域)中缓存设置的详解(关于Cache-control和Pragma)

header(头域)中缓存设置的详解(关于Cache-control和Pragma)      2012-08-08 10:08     URL: http://blog.csdn.net/f...
  • jackpk
  • jackpk
  • 2015年06月02日 17:20
  • 2896

关于php的 header("Cache-control: private");用法~

一般用于注册表单提交后后退保留表单项 实际应用如下:  问:为什么我在点击浏览器的后退按钮后,所有字段的信息都被清空了? 答:这是由于你在你的表单提交页面中使用了 session_s...
  • kof820
  • kof820
  • 2013年04月09日 08:48
  • 2845

关于header("Cache-control: private")

关于header("Cache-control: private")   http://yulei568.blog.163.com/blog/static/135886720092102434240...
  • lengyue1084
  • lengyue1084
  • 2013年09月09日 14:57
  • 1423
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTTP header中的Cache-control
举报原因:
原因补充:

(最多只允许输入30个字)