php输出浏览器页面缓存

技术文档 - JS文档 作者: xcheng1986 发布于:2014-06-09 阅读(1139) (暂无评论)  

<?php
date_default_timezone_set("PRC");
header('Content-type:text/html;charset=utf-8');
if ( isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) &&(strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == filemtime(__FILE__)) ) {

    # 当检测上次请求返回的 Last-Modified 时间与当前文件修改时间(数据库存储内容请换为 记录修改时间)一致时,
    # 直接进行 HTTP 头 返回 304 Last-Modified 状态
    # (注意!此时HTTP请求并没有返回内容 只返回一个 HTTP 头)告诉浏览器:
    # 你上次缓存的内容和我现在的内容一致
    header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime(__FILE__)).' GMT', true, 304);

} else {
    header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime(__FILE__)).' GMT', true, 200);
    //header('Content-Length: '.filesize(__FILE__));
    header('Cache-control: max-age=3600');
    echo '页面初次请求时间:'.date('Y-m-d H:i:s',time()).' (刷新检测是否是浏览器缓存)';
}



fireBug查看请求信息:
响应头信息原始头信息
	Connection	Keep-Alive
	Date	Mon, 09 Jun 2014 06:52:07 GMT
	Keep-Alive	timeout=5, max=100
	Server	Apache/2.4.9 (Win64) PHP/5.5.12

请求头信息格式化头信息
	GET //test.php HTTP/1.1
	Host: localhost.
	User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
	Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
	Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
	Accept-Encoding: gzip, deflate
	Referer: http://localhost/
	Connection: keep-alive
	If-Modified-Since: Mon, 09 Jun 2014 06:51:41 GMT
	Cache-Control: max-age=0

来自缓存的响应头信息
	Cache-Control	max-age=3600
	Content-Length	108
	Content-Type	text/html;charset=utf-8
	Date	Mon, 09 Jun 2014 06:52:07 GMT
	Last-Modified	Mon, 09 Jun 2014 06:51:41 GMT
	Server	Apache/2.4.9 (Win64) PHP/5.5.12
	X-Powered-By	PHP/5.5.12