参考文献:HTTP/1.1 Cache-Control的理解
http请求头:
Accept: text/html,image/* 浏览器通过这个头,告诉服务器它所支持的数据类型Pragma: no-cache
HTTP头分两种:
一、响应头
1、状态行
格式:版本 状态代码 说明 如:HTTP/1.1 200 OK
状态码:2xx 成功(200 OK、201 Created、202 Accepted、204 No Content)
3xx 重定向(300 Multiple Choice、301 Moved Permanently、302 Found、303 See Other、304 Not Modified、305 Use Proxy)
4xx 请求错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理(400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、405 Method Not Allowed、406 Not Acceptable、408 Request Timeout等)
5xx 服务器错误(500 Internal Server Error、501 Not Implemented、502 Bad Gateway、503 Service Unavailable等)
2、expire 期限,即有效期
格式:Expires:GMT格式的时间 例如:Expires:Tue, 11 Oct 2011 04:42:44 GMT
3、Content-Type 文件类型
格式:Content-Type:类型( text/html;charset=gb2312、image/png、image/jpg、application/javascript等)
4、Content-Length 文件大小
格式:Content-Length:大小
5、Cache-Control 缓存控制
格式:Cache-Control:方式(private、public、no-cache、no-store、max-age、min-fresh、max-stale等)
Public 指示响应可被任何缓存区缓存。
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的
部分响应消息,此响应消息对于其他用户的请求无效。
no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换)
根据什么能被缓存
no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
根据缓存超时
max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以
接收超出超时期指定值之内的响应消息。
6、Content-Encoding 内容格式
格式:Content-Encoding:格式(gzip等)
7、date 时间
格式:Date:GMT格式时间,比如:Date: Tue, 11 Oct 2011 04:42:44 GMT
8、Server 服务器
格式:Server:服务器类型(BWS/1.0、apache、iis) 比如:Server:BWS/1.0
9、Connection 连接
格式:Connection:方式(Keep-Alive等)
10、Set-cookie 设置cookie
格式:Set-cookie:key=value;key2=value;
二、请求头
1、请求行
格式:请求方式(get、post) 某某文件 协议(HTTP/1.1) 比如:GET / HTTP/1.1
2、accept 接受的文件类型
格式:Acceptimage/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
3、Accept-Language 接收语言
格式:Accept-Languagezh-cn
4、Cookie
比如:CookieBAIDUID=80489F991FE27D7AA10C41259CF12346:FG=1
5、User-Agent 客户端类型
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA)
6、Accept-Encoding: gzip, deflate
7、Connection: Keep-Alive
PHP中设置http响应头
使用内置header(“字符串”)来设置
例如:header("Content-Type:text/html;charset=utf-8");
header("Expires:GMT时间");
另外需要注意的是,header()函数不会严格检测字符串的内容,也就是说,不管字符串是否合法,除了header("Location:index.php"),php都会将字符串添加到响应头内,header("dada:my name is dada"),设置这个不合法的HTTP头字段,有效。
在HTML文档中使用meta标签设置http响应头
如:<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Cache-control" content="no-cache"/> 等同于<meta http-equiv="Progma" content="no-cache" />,后者属于旧版本
<meta http-equiv="Set-Cookie" content="uid=123;name=dada"/>
<meta http-equiv="refresh" content="2;URL=http://www.baidu.com"/>重指向某站点
<meta http-equiv="expires" content="GMT格式时间"/>