我正在使用file_get_contents()从外部网站加载动态图片。
问题是图像已在远程网站上更新,但我的脚本仍然显示旧图像。我假设服务器在某处缓存图像,但是如何在使用file_get_contents获取文件时强制服务器清除缓存并使用更新的图像?
在我的本地机器上,我必须按CTRL + F5强制刷新图像。
我还尝试在我的脚本中添加无缓存标头,但它不起作用:
$image = imagecreatefromstring(file_get_contents($path));
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé
header('Content-type: image/png');
imagepng($image);
exit();
答案 0 :(得分:16)
您的问题是您正在使用外部资源来加载文件。加载后 - 将一些标题发送到您的客户端是没有意义的。您的图像已经已加载(这是来自外部资源的缓存)。
然而,解决问题很容易。假设您在http://domain.com/path/to/image
中使用$path
之类的内容。然后就做:
$image = imagecreatefromstring(file_get_contents($path.'?'.mt_rand()));
- 的想法是向GET请求添加一些随机值,并防止它被缓存。