php 页面固定时间内访问输出304

岳小威子
2023-03-17 / 275 个字 / 0 评论 / 48 阅读 / 加载耗时:21ms / 正在检测是否收录...
温馨提示:
本文最后更新于2023年04月03日,已超过360天没有更新,若内容或图片失效,请留言反馈。


要实现固定时间内访问输出304,需要使用HTTP缓存机制。具体步骤如下:
设置响应头:在PHP脚本的开头使用header()函数设置响应头,包括Cache-Control、Expires和Last-Modified等字段。
判断是否需要更新:在每次请求时,先判断客户端是否已经缓存了该资源,如果已经缓存,则比较客户端缓存的Last-Mod> ified时间和服务器端的Last-Modified时间是否一致,如果一致,则输出304 Not Modified响应,否则输出新的资源>> 内容和新的Last-Modified时间。
下面是示例代码:

// 设置响应头
header('Cache-Control: max-age=3600, public');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($filename)) . ' GMT');

// 判断是否需要更新
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
    $last_modified_time = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
    $current_modified_time = filemtime($filename);
    if ($last_modified_time == $current_modified_time) {
        // 输出304 Not Modified响应
        header('HTTP/1.1 304 Not Modified');
        exit;
    }
}

// 输出新的资源内容
readfile($filename);

在上面的代码中,设置了Cache-Control、Expires和Last-Modified等响应头字段,用于控制缓存的过期时间和缓存的有效性。在判断是否需要更新时,使用了HTTP请求头中的If-Modified-Since字段,用于比较客户端缓存的Last-Modified时间和服务器端的Last-Modified时间是否一致。如果一致,则输出304 Not Modified响应,否则输出新的资源内容和新的Last-Modified时间。
2145854090.jpg

文章到这里就结束了

您在本文章已经停留了大概
喜欢的话就点个赞吧!或着请我喝个冰可乐,我就太感谢你了!


0
打赏
拜谢打赏(☆ω☆)

感谢老板,老板大气。。

评论 (0)

取消