php 浏览器缓存 图片_PHP 设置图片浏览器缓存方法介绍

本文探讨了如何通过精确设置HTTP头信息,如Content-Type、Content-Length、Cache-Control和Expires,来优化图片资源的缓存策略,确保在48小时内有效,减少服务器负载并提高页面加载效率。
摘要由CSDN通过智能技术生成

$fullpath='/www/images/'.basename($_GET['img']);// 假定文件都在 / www/images / 下if (!is_file($fullpath)) {header("HTTP/1.0 404 Not Found");exit();}$info = getImageSize($fullpath); // 获取图片信息if (!$info) { // 如果不是图片header("HTTP/1.0 404 Not Found");exit();}// 以下凡是 header 函数都是在输出头部信息较多header('Content-type:'. $info['mime']); // 类似于 image/pngheader('Content-Length:'. filesize($fullpath)); // 文件长度header('Pragma:'); // 没用, 但要设置, 防止服务器生成 no-cache 的可怕字眼// 手动设置过期时间, 单位都是秒$validtime = 48* 60 * 60; // 48 小时// 缓存相对请求的时间,header('Cache-Control:' . 'max-age='. $validtime);// 也很重要的 Expires 头, 功能类似于 max-age//time()+$validtime: 设置期限, 到期后才会向服务器提交请求//gmdate, 生成 Sun, 01 Mar 2009 04:05:49 +0000 的字符串, 而且是 GMT 标准时区//preg_replace, 生成 Sun, 01 Mar 2009 04:05:49 GMT, 注意: 可能与服务器设置有关,// 但我都用默认设置header('Expires:'. preg_replace('/.{5}$/', 'GMT', gmdate('r', time()+ $validtime)));// 文件最后修改时间$lasttime = filemtime($fullpath);// 最后修改时间, 设置了, 点击刷新时, 浏览器再次请求图片才会发出'IF_MODIFIED_SINCE'头,// 从而被 php 程序读取header('Last-Modified:' . preg_replace('/.{5}$/', 'GMT', gmdate('r', $lasttime) ));// 重要, 如果请求中的时间和 文件生成时间戳相等, 则文件未修改, 客户端可用缓存if (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $lasttime) {header("HTTP/1.1 304 Not Modified"); // 服务器发出文件不曾修改的指令exit();}// 如果文件被修改了, 只好重新发出数据echo file_get_contents($fullpath);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值