对于我缺乏这方面的知识,我提前道歉;我查看了很多其他帖子,但无法让他们的任何解决方案为我工作。
无论如何,我正在使用动态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 页面,否则他们看不到更新。
如何让它缓存图片,但在图片更改后强制“重新缓存”?