我正在构建一个CMS,允许在主页上更换一些图像横幅。我遇到的麻烦是图像被缓存(由浏览器?),并且在页面刷新之前不会显示。这适用于管理页面(显示当前图像),以及访问“主页”,其中图像显示给普通页面访问者。
我没有准确计时,但即使我打开一个新标签并访问了网址,这也是持久的。它只会在刷新页面后更改。
对于它的价值,这是我用来更新图像的代码:
$asset = 'homepage_'.Input::get('asset').'.jpg';
File::delete(public_path().'/img/'.$asset);
$file = Input::file('upload');
$file->move(public_path() .'/img/', $asset);
有没有办法告诉服务器“重新加载”该图像,以便在更改时管理员不需要刷新页面?
答案 0 :(得分:0)
在上传时重命名图像可能有所帮助,具体取决于实际缓存的内容。你可能想以某种方式修改文件名。
如果你已经完成了这项工作,请查看响应标题,看看是否可以在那里进行更改。
答案 1 :(得分:0)
如果是缓存问题;
向网址添加参数
http://localhost/uploads/myimage.jpg?id=11644477200
代码;
echo $image . "?id=". time();
答案 2 :(得分:-1)
EDITED:找到了合适的解决方案。
您想要在图像网址中添加一个变量,该变量将是最后一次修改为int的时间。你这样做:
define("SITE_URL","http://".$_SERVER["HTTP_HOST"]."/");
define ('SITE_ROOT', realpath(dirname(__FILE__)));
$fmt = filemtime ( SITE_ROOT ."/img/imagename.jpg" );
echo "<img class='whatever' src='". SITE_URL ."img/imagename.jpg?".$fmt."' />";