gpt4 book ai didi

php - 缓存 php 生成的图像,直到它发生变化

转载 作者:行者123 更新时间:2023-12-02 05:37:57 25 4
gpt4 key购买 nike

对于我在这方面的知识不足,我深表歉意;我看过很多其他帖子,但无法找到适合我的任何解决方案。

无论如何,我正在使用动态 displayimage.php 文件在我正在处理的网站上显示用户的个人资料图片。该页面采用 id 参数,并从 mysql 数据库中提取图像文件名。这是(缩写的)代码:

$id = mysql_real_escape_string($_GET[id]);

$table = "images_user";
$idname = "userid";
$uploaddir = "/home/username/uploads/images/user/"; //outside web root

$select = mysql_query("SELECT * FROM $table WHERE $idname = '$id' LIMIT 1");

if(mysql_num_rows($select) > 0) {
$file = mysql_fetch_assoc($select);

header("Content-Type: $file[mimetype]");
readfile($uploaddir.$file[name]);
}

目前,因为它是从 php 文件生成的,所以图像没有被缓存,这确实会降低网站的速度。所以我添加这个:

header("Cache-Control: private, max-age=10800, pre-check=10800");
header("Pragma: private");
header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));

问题解决了,太棒了!现在图像已缓存,加载速度超快。

但是,用户可以更改他们的个人资料图片。发生这种情况时,我保存他们上传的图片,删除旧图片,并更新数据库条目以指向新图片。但现在,由于旧图片仍在缓存中,他们看不到更新,除非他们手动 F5 页面。

我怎样才能让它缓存图片,但当图片被更改时强制“重新缓存”?

最佳答案

在他们更新图片后,在您访问的 url 中添加一个额外的参数来显示图片,这里是 `displayimage.php'。最常见的是时间戳。

在正常情况下,您将访问 displayimage.php?id=123123

更新个人资料图片后,要刷新图像,您需要访问displayimage.php?id=123123&time=1000121110。每次用户更新图像时,更改时间参数将强制从页面重新加载图像。

关于php - 缓存 php 生成的图像,直到它发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11400184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com