<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post//</link>
<title><![CDATA[HTTP头的Expires与Cache-control]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[有感而发]]></category>
<pubDate>Thu, 21 Apr 2011 02:12:55 +0000</pubDate> 
<guid>https://atim.cn/post//</guid> 
<description>
<![CDATA[ 
	<br/><br/>1.概念<br/><br/>Cache-control用于控制HTTP缓存（在HTTP/1.0中可能部分没实现，仅仅实现了Pragma: no-cache）<br/><br/>数据包中的格式：<br/><br/>Cache-Control: cache-directive<br/><br/>cache-directive可以为以下：<br/><br/>request时用到：<br/><br/>&#124; "no-cache"<br/>&#124; "no-store"<br/>&#124; "max-age" "=" delta-seconds<br/>&#124; "max-stale" [ "=" delta-seconds ]<br/>&#124; "min-fresh" "=" delta-seconds<br/>&#124; "no-transform"<br/>&#124; "only-if-cached"<br/>&#124; "cache-extension"<br/><br/>response时用到：<br/><br/>&#124; "public"<br/>&#124; "private" [ "=" <"> field-name <"> ]<br/>&#124; "no-cache" [ "=" <"> field-name <"> ]<br/>&#124; "no-store"<br/>&#124; "no-transform"<br/>&#124; "must-revalidate"<br/>&#124; "proxy-revalidate"<br/>&#124; "max-age" "=" delta-seconds<br/>&#124; "s-maxage" "=" delta-seconds<br/>&#124; "cache-extension"<br/><br/>部分说明：<br/>根据是否可缓存分为<br/>Public&nbsp;&nbsp;指示响应可被任何缓存区缓存。<br/>Private&nbsp;&nbsp;指示对于单个用户的整个或部分响应消息，不能被共享缓存处理。这允许服务器仅仅描述当用户的<br/>部分响应消息，此响应消息对于其他用户的请求无效。<br/>no-cache&nbsp;&nbsp;指示请求或响应消息不能缓存（HTTP/1.0用Pragma的no-cache替换）<br/>根据什么能被缓存<br/>no-store&nbsp;&nbsp;用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。<br/>根据缓存超时<br/>max-age&nbsp;&nbsp;指示客户机可以接收生存期不大于指定时间（以秒为单位）的响应。<br/>min-fresh&nbsp;&nbsp;指示客户机可以接收响应时间小于当前时间加上指定时间的响应。<br/>max-stale&nbsp;&nbsp;指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值，那么客户机可以<br/>接收超出超时期指定值之内的响应消息。<br/>Expires 表示存在时间，允许客户端在这个时间之前不去检查（发请求），等同max-age的<br/>效果。但是如果同时存在，则被Cache-Control的max-age覆盖。<br/>格式：<br/>Expires = "Expires" ":" HTTP-date<br/>例如<br/>Expires: Thu, 01 Dec 1994 16:00:00 GMT （必须是GMT格式）<br/><br/> <br/><br/>2.应用<br/>通过HTTP的META设置expires和cache-control<br/><meta http-equiv="Cache-Control" content="max-age=7200" /><br/><meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" /><br/>上述设置仅为举例，实际使用其一即可。这样写的话仅对该网页有效，对网页中的图片或其他请求无效，并不会做任何cache。<br/>这样客户端的请求就多了，尽管只是检查Last-modified状态的东西，但是请求一多对浏览速度必定有影响。<br/><br/>如果要对文件添加cache可以通过apache的mod_expire模块，写法为<br/><IfModule mod_expires.c><br/>ExpiresActive On<br/>ExpiresDefault "access plus 1 days"<br/><br/></IfModule><br/>记得ExpiresActive设为On，我起先没设置On，似乎怎样YSlow都查不到缓存机制。这样添加的话就是默认所有的。<br/><br/>如果要针对个别MIME类型则可以：<br/>ExpiresByType image/gif "access plus 5 hours 3 minutes"<br/>见 Apache Module mod_expires<br/>另外，当点击浏览器上的刷新，客户端发送的请求中均是max-age=0，表示validate操作，发送请求到服务器<br/>要求检查cache，再更新cache，一般得到的是304 Not Modified，表示没变动。<br/><br/>参考：<br/><a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32" target="_blank">HTTP RFC2616 HeaderField</a><br/><a href="http://www.cnpaf.net/class/HTTP/0532918532641885.html" target="_blank">HTTP协议基础</a>
]]>
</description>
</item><item>
<link>https://atim.cn/post//#blogcomment</link>
<title><![CDATA[[评论] HTTP头的Expires与Cache-control]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://atim.cn/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>