如何在PHP中设置Last-Modified响应头?
PHP 手动设置 Last-Modified 响应头实现缓存优化
直接用以下代码即可实现需求,它不仅会发送对应文件修改时间的Last-Modified响应头,还会处理客户端的缓存验证请求,返回304状态码以充分利用缓存机制:
// 获取当前PHP文件的最后修改时间戳 $lastModified = filemtime(__FILE__); // 将时间戳格式化为HTTP标准要求的GMT日期字符串 $lastModifiedHeader = gmdate('D, d M Y H:i:s \G\M\T', $lastModified); // 发送Last-Modified响应头 header("Last-Modified: $lastModifiedHeader"); // 检查客户端是否发送了If-Modified-Since请求头,验证缓存有效性 if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { // 解析客户端传来的时间为时间戳 $clientModifiedTime = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); // 如果文件自客户端上次请求后未修改,返回304状态码并终止脚本执行 if ($clientModifiedTime >= $lastModified) { header("HTTP/1.1 304 Not Modified"); exit; } } // 下方编写你的页面业务逻辑 echo "你的页面内容";
关键说明:
__FILE__:PHP魔术常量,代表当前执行脚本的完整路径,确保获取的是承载代码的目标PHP文件的修改时间。gmdate():必须使用GMT时区格式化日期,这是HTTP协议对响应头日期格式的强制要求。- 304状态码处理:这一步是缓存机制生效的核心,否则客户端无法识别缓存有效性,仍会每次请求完整内容。
内容的提问来源于stack exchange,提问作者Jordan Clark
相关产品推荐
相关产品推荐

