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

fiy 其他 101

回复

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

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

    1. 使用header()函数设置缓存控制标头:可以使用以下代码在发送图像之前设置缓存控制标头。

    “`php
    header(“Cache-Control: no-cache, no-store, must-revalidate”); //禁用缓存
    header(“Pragma: no-cache”);
    header(“Expires: 0”);
    “`

    这段代码将确保浏览器不会缓存该图像文件,而是每次请求图像时都从服务器上获取。

    2. 为图像URL添加随机参数:你可以在图像的URL后面添加一个随机参数来确保浏览器不会缓存该文件。例如:

    “`php
    $image_url = ‘image.jpg?’ . uniqid();
    “`

    将图片的URL设定为上述代码所生成的URL,每次请求图像时都会生成一个不同的参数,浏览器会认为这是一个新的URL,从而不会缓存图片文件。

    3. 修改图像的文件名:每次需要显示图像时,可以生成一个新的文件名并将图像文件复制到该文件名。这样浏览器会认为这是一个新的图像文件,从而不会缓存它。例如:

    “`php
    $source = ‘original_image.jpg’;
    $new_filename = uniqid() . ‘_image.jpg’;
    copy($source, $new_filename);
    “`

    然后将$new_filename作为图像的URL使用。

    请注意,以上方法并不能完全保证浏览器不会缓存图像文件,因为浏览器行为的差异性。有些浏览器可能仍然会缓存文件,但大部分浏览器都会遵循上述方法来禁用缓存。如果需要确保图片完全没有缓存,你可能需要使用其他技术,如使用不同的URL或在服务器端生成临时图像文件。

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

    在PHP中,可以通过以下几种方法来确保图片文件不被缓存:

    1. 设置HTTP头信息:使用header()函数来设置HTTP头信息,包括Cache-Control、Pragma和Expires。将这些头信息设置为特定的值可以告诉浏览器不要缓存图片文件。

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

    2. 添加随机参数:在请求图片的URL后面添加一个随机参数可以确保每次请求都是一个新的URL,从而绕过浏览器缓存。

    “`php
    $random = mt_rand(1000, 9999);
    $imageUrl = ‘path/to/image.jpg?’ . $random;
    “`

    3. 修改文件名:在呈现图片文件的URL中使用不同的文件名,每次访问都使用一个新的文件名,从而使浏览器无法从缓存获取图片。

    “`php
    $timestamp = time();
    $imageUrl = ‘path/to/image’ . $timestamp . ‘.jpg’;
    “`

    4. 使用.htaccess文件:在网站根目录下创建一个名为.htaccess的文件,并通过设置文件的内容来禁用浏览器缓存。

    “`htaccess

    Header set Cache-Control “no-store, no-cache, must-revalidate”

    “`

    5. 在图片链接上设置属性:在生成图片链接时,为链接添加一个”nocache”的属性,然后通过JavaScript代码来检测并移除这个属性,确保每次请求都是新的。

    “`html


    ```

    以上是几种常用的方法,可以根据具体需求选择合适的方法来确保图片文件不被缓存。

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

    在PHP中,可以通过设置响应头信息来实现让图片没有缓存文件。以下是一种常用的方法:

    1. 使用header()函数设置响应头信息,具体设置如下:
    “`php
    header(“Pragma: no-cache”);
    header(“Cache-Control: no-cache, must-revalidate”);
    header(“Expires: Sat, 26 Jul 1997 05:00:00 GMT”);
    “`
    2. 这些header()函数的作用如下:
    – **Pragma: no-cache**:表示不对页面进行缓存,每次请求都会从服务器端获取最新的内容。
    – **Cache-Control: no-cache, must-revalidate**:同时设置了no-cache和must-revalidate两个指令。no-cache表示不进行缓存,must-revalidate表示必须确认缓存的有效性。因此每次请求都会发送一个请求到服务器进行确认。
    – **Expires: Sat, 26 Jul 1997 05:00:00 GMT**:表示过期时间为一个过去的时间,使浏览器认为该文件已过期,从而重新请求服务器获取最新的文件。

    3. 整体使用示例代码如下:
    “`php

    “`
    在上述示例代码中,首先通过header()函数设置了图片类型,即Content-type为image/jpeg。然后设置了不进行缓存的header头信息。最后使用GD库生成了一个200×200的灰色图片,并输出给客户端。

    使用以上方法可以确保图片不会被缓存,每次请求都能从服务器获取最新的图片内容。

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

400-800-1024

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

分享本页
返回顶部