上传的图片无需刷新即可更改

时间:2015-02-05 21:57:17

标签: php image caching laravel

我正在构建一个CMS,允许在主页上更换一些图像横幅。我遇到的麻烦是图像被缓存(由浏览器?),并且在页面刷新之前不会显示。这适用于管理页面(显示当前图像),以及访问“主页”,其中图像显示给普通页面访问者。

我没有准确计时,但即使我打开一个新标签并访问了网址,这也是持久的。它只会在刷新页面后更改。

对于它的价值,这是我用来更新图像的代码:

    $asset = 'homepage_'.Input::get('asset').'.jpg';
    File::delete(public_path().'/img/'.$asset);

    $file = Input::file('upload');
    $file->move(public_path() .'/img/', $asset);

有没有办法告诉服务器“重新加载”该图像,以便在更改时管理员不需要刷新页面?

3 个答案:

答案 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."' />";