php中怎么让图片没有缓存文件夹里

fiy 其他 110

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,可以通过设置响应头信息来控制图片的缓存。具体实现方式如下:

    1. 设置响应头信息:
    “`
    header(“Cache-Control: no-cache, no-store, must-revalidate”); // HTTP 1.1.
    header(“Pragma: no-cache”); // HTTP 1.0.
    header(“Expires: 0”); // Proxies.
    “`
    上述代码会设置以下信息:

    – Cache-Control: no-cache, no-store, must-revalidate
    – no-cache:指示浏览器不要直接从缓存中获取资源,而是必须向服务器发送请求。
    – no-store:指示浏览器不要将响应保存在缓存或本地。
    – must-revalidate:指示浏览器在每次请求该资源时都必须重新验证缓存的有效性。

    – Pragma: no-cache
    – 该字段是为了向后兼容,当浏览器不支持Cache-Control时,可以通过Pragma字段来实现类似的效果。

    – Expires: 0
    – 设置Expires字段的值为0,告诉浏览器该资源已过期,需要重新获取。

    2. 输出图片内容:
    “`
    $image = getImageContent(); // 获取图片内容,这里需要自定义获取图片的逻辑
    header(“Content-Type: image/jpeg”); // 设置图片类型
    echo $image; // 输出图片内容
    “`
    根据实际需求,可以自定义获取图片的逻辑。上述代码中的`getImageContent()`函数需要根据具体情况进行实现,以获取图片的内容。

    通过以上方式,可以在PHP中设置响应头信息,实现让图片没有缓存文件夹的效果。这样每次请求该图片时,浏览器都会向服务器发送请求,获取最新的图片内容。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    1. 设置响应头信息:使用header函数设置响应头信息,其中包括”Cache-Control”和”Expires”字段。将”Cache-Control”设置为”no-store, no-cache, must-revalidate”,将”Expires”设置为过去的时间,以保证浏览器不缓存该图片文件。

    示例代码:
    “`php
    header(“Cache-Control: no-store, no-cache, must-revalidate”);
    header(“Expires: ” . gmdate(“D, d M Y H:i:s”, time() – 3600) . ” GMT”);
    “`

    2. 添加随机参数:在图片URL后面添加随机参数,每次请求图片时,这个随机参数都会发生变化,从而使浏览器不会从缓存中读取图片。

    示例代码:
    “`php
    $image_url = “http://example.com/image.jpg”;
    $random_number = rand();
    $no_cache_url = $image_url . “?rand=” . $random_number;
    “`

    3. 使用.htaccess文件:在网站的根目录下添加一个名为.htaccess的文件,并在其中添加以下代码。这将强制浏览器不缓存任何图片文件。

    示例代码:
    “`

    Header set Cache-Control “no-store, no-cache, must-revalidate”
    Header set Expires “Thu, 01 Jan 1970 00:00:00 GMT”

    “`

    4. 将图片文件名进行动态化:将图片文件名包含时间戳或其他唯一标识符,每次请求图片时,更改文件名。这样可以确保每次请求的文件名不同,从而防止浏览器缓存。

    示例代码:
    “`php
    $image_filename = “image_” . time() . “.jpg”;
    $image_path = “path/to/image/” . $image_filename;
    “`

    5. 强制浏览器重新加载图片:通过修改图片的URL,强制浏览器重新加载图片。可以在服务器端动态生成URL,以保证每次请求的URL都不同。

    示例代码:
    “`php
    $image_path = “path/to/image/image.jpg”;
    $image_url = “http://example.com/get_image.php?image=” . urlencode($image_path);
    “`

    需要注意的是,以上方法只是让浏览器不缓存图片文件,但并不能完全阻止浏览器缓存,因为浏览器具有自己的缓存机制。对于某些浏览器,可能还需要结合其他方法来达到完全禁止缓存的效果。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在PHP中,要让图片不被浏览器缓存,可以使用以下方法:

    方法一:设置HTTP头信息
    在PHP脚本输出图片之前,可以使用header()函数来设置HTTP头信息,具体使用如下所示:

    “`php
    header(‘Cache-Control: no-store, no-cache, must-revalidate, max-age=0’);
    header(‘Cache-Control: post-check=0, pre-check=0’, false);
    header(‘Pragma: no-cache’);
    header(‘Expires: 0’);
    “`

    其中,`Cache-Control`和`Pragma`用于告诉浏览器不要缓存该图片,`Expires`用于设置过期时间为0,确保浏览器不会从缓存中获取图片。

    方法二:在图片URL中添加随机参数
    另一种方式是在图片URL中添加一个随机参数,强制浏览器每次都从服务器请求图片,而不是从缓存中获取。可以使用`time()`函数或者`uniqid()`函数生成随机参数,具体使用如下所示:

    “`php
    $imgUrl = ‘example.png’ . ‘?t=’ . time();
    // 或者
    $imgUrl = ‘example.png’ . ‘?t=’ . uniqid();
    “`

    这样,在网页中引用这个带有随机参数的图片URL,浏览器就会每次都重新请求该图片。

    方法三:设置Cache-Control实现缓存控制
    在PHP中,可以通过设置Cache-Control的值来实现对缓存的控制。下面介绍一些常用的Cache-Control的值:

    – `no-store`:不允许缓存该资源,每次访问都会从服务器获取最新的数据;
    – `no-cache`:浏览器必须先提交验证缓存是否过期,如果过期则从服务器获取最新数据;
    – `must-revalidate`:缓存过期后必须重新验证资源是否过期,并从服务器获取最新数据;
    – `max-age`:设置缓存的最大有效时间,单位为秒。

    可以根据实际需求选择合适的Cache-Control值,使用`header()`函数设置即可。

    需要注意的是,以上方法都是在输出图片之前执行的,确保不会将图片数据写入到缓存中。通过以上方法,可以有效地防止图片在浏览器缓存中保存,并确保每次请求都能从服务器获取最新的图片。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部