这就是我正在做的事情,检查文件是否存在并在页面中回显,但页面显示旧图像,即使它已经被另一个图像替换它只显示旧图像,但是新图像在那里和旧图像被具有相同名称的新图像取代。
<?php
$dir = 'up/images/'.$_SESSION ['username'].'.png';
if (file_exists($dir)) {
//echo "ok";
echo '<img src="up/images/'.$_SESSION['username'].'.png" class="img-responsive img-thumbnail" width="200px;" height="200px;">';
} else {
//not found
echo '<img src="img/user-icon-yellow.png" class="img-responsive img-thumbnail" width="200px;" height="200px;">';
}
?>
它看起来像是一个缓存问题。
答案 0 :(得分:1)
缓存半身像的好方法是在图像路径中添加版本字符串。例如:
$image = basename($_SESSION['username']) . ".png";
$image = realpath("/path/to/$image");
echo '<img src="up/images/'.$_SESSION['username'].'.png?v='.filemtime($image).'" [...]>';
这是假设您的HTML网页没有被缓存,如果是,那么您需要发送额外的标头来破坏缓存。这取决于环境,但是对于类似Apache的东西,您可以执行以下操作:
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"
或者,您也可以使用PHP的header()
函数来设置标题:
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
答案 1 :(得分:0)
确保您确实已经替换了图片。并且图片也不会更改,直到您刷新页面。 PHP不是动态语言(结果(新图片)在您更改的时刻不会出现。) 替换图像时,请执行此操作以刷新页面:
header("Refresh:0"); //Refreshes the page after 0 second (immediately)
您也可以尝试使用:
header('Location: '. $_SERVER['PHP_SELF']); //It will redirect the page to the same page and probably clear the cache
答案 2 :(得分:-1)
它的缓存。尝试在Google Chrome上点击CTRL + F5,或者只需进入设置并删除缓存文件。
您可以随时安装Google Chrome扩展程序,可以在每次刷新时删除特定网站的缓存文件。