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

worktile 其他 101

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在PHP中,可以通过设置响应头来禁止浏览器缓存图片文件。

    可以使用以下代码来实现:

    “`php

    “`

    上述代码中,首先设置了`Cache-Control`头,指定了一些缓存控制参数,如`no-store`表示不缓存文件,`no-cache`表示先进行验证,`must-revalidate`表示必须重新进行验证,`max-age=0`表示立即过期。

    然后设置了`Pragma: no-cache`头,表示不使用缓存。

    最后通过设置`Expires`头为过去的时间,确保浏览器不会使用缓存的版本。

    接下来可以使用`readfile`函数读取图片文件,并设置`Content-Type`头为对应的图片类型(例如`image/jpeg`)。

    这样,通过以上设置,浏览器在请求该图片时将不会缓存文件夹。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,可以通过设置HTTP头来禁止浏览器缓存图片文件。以下是几种实现方法:

    1. 使用header()函数设置缓存控制头信息:

    “`php
    header(‘Cache-Control: no-cache, no-store, must-revalidate’);
    header(‘Pragma: no-cache’);
    header(‘Expires: 0’);
    “`

    2. 使用header()函数设置ETag和Last-Modified头信息,并检查If-None-Match和If-Modified-Since请求头来判断是否需要重新加载图片:

    “`php
    $etag = md5_file($path_to_image);
    $last_modified = filemtime($path_to_image);

    header(‘ETag: ‘ . $etag);
    header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s’, $last_modified) . ‘ GMT’);

    if(isset($_SERVER[‘HTTP_IF_NONE_MATCH’]) && $_SERVER[‘HTTP_IF_NONE_MATCH’] == $etag){
    header(‘HTTP/1.1 304 Not Modified’);
    exit();
    }

    if(isset($_SERVER[‘HTTP_IF_MODIFIED_SINCE’]) && strtotime($_SERVER[‘HTTP_IF_MODIFIED_SINCE’]) >= $last_modified){
    header(‘HTTP/1.1 304 Not Modified’);
    exit();
    }
    “`

    3. 使用header()函数设置Expires头信息,将过期时间设置为一个过去的时间戳:

    “`php
    header(‘Expires: ‘ . gmdate(‘D, d M Y H:i:s’, time() – 3600) . ‘ GMT’);
    “`

    4. 使用Apache的.htaccess文件来设置缓存控制信息:

    “`

    FileETag None

    Header unset ETag
    Header set Cache-Control “max-age=0, no-cache, no-store, must-revalidate”
    Header set Pragma “no-cache”
    Header set Expires “Wed, 11 Jan 1984 05:00:00 GMT”


    “`

    5. 使用nginx的配置文件来设置缓存控制信息:

    “`
    location ~* \.(jpg|jpeg|png|gif|ico)$ {
    expires 0;
    add_header Pragma “no-cache”;
    add_header Cache-Control “no-store, no-cache, must-revalidate, post-check=0, pre-check=0”;
    }
    “`

    通过以上方法,可以有效地禁止浏览器缓存图片文件夹,确保每次加载图片时都能从服务器获取最新的图片内容。

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

    在PHP中,你可以使用以下方法来确保图片没有缓存文件夹:

    1. 设置响应头信息:在发送图片的页面上设置响应头信息,告诉浏览器不要缓存这个图片。可以在PHP文件的顶部使用header()函数来设置响应头信息,如下所示:

    “`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: Sat, 1 Jan 2000 00:00:00 GMT”);
    “`

    这些响应头信息分别是:禁用缓存(no-cache),确保页面立即失效(no-store),不保存缓存副本(must-revalidate),0秒后过期(max-age=0),不进行预检查(pre-check=0),不进行后检查(post-check=0),不进行缓存(Pragma: no-cache),过期时间设为2000年1月1日(Expires: Sat, 1 Jan 2000 00:00:00 GMT)。

    2. 在图片URL后添加随机参数:在图片URL后添加一个随机参数,这样每次请求图片时,URL都会不同,从而强制浏览器重新获取图片。例如:

    “`html
    2年前 0条评论

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部