Symfony 3 - 图像不会立即更新

时间:2017-03-02 15:11:32

标签: php image file caching symfony

目前正在开发Symfony 3应用程序。我创建了一项服务,允许用户上传图像,然后选择裁剪部分,最后保存具有特定高度和宽度的头像。头像保存在/web/img/uploads/avatar/文件夹中。我正在使用用户ID来命名文件。因此,ID为13的用户将其头像保存在/web/img/uploads/avatar/13.png

我的问题是,当用户更新他的头像时,文件在文件夹中被正确替换,但在实际网站上,显示的头像暂时保持旧版。 在开发环境中,这需要在新头像替换旧头像之前几分钟。即使我去了头像网址(localhost/app_dev.php/img/uploads/avatar/xxx.png),我仍然会看到旧的头像一段时间,最后它会被新的头像取代。那么,文件系统中的头像会像预期的那样立即被替换。

我认为这可能来自缓存。我尝试在谷歌上搜索解决方案,但我发现的所有内容都与LiipImagineBundle及其缓存管理器有关,但我没有使用此捆绑包...

我尝试删除旧的头像,如果它在找到它的名字之后存在,并且在实际裁剪和保存图像之前。如下。

if(file_exists($dst)) {
    unlink($dst);
}

但它不起作用。完全没有。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这绝对是浏览器缓存,如bxN5所示。但我不同意更改标题。如果您选择通过修改缓存标头来管理此操作,则会强制您永久删除这些映像上的缓存,或者让Web浏览器询问您的服务器是否已修改这些映像(下载的字节数较少,但每次调用时都有额外的请求)。

我认为更好的方法是通过更改图片名称或添加查询字符串来更改图片网址。在这两种情况下,您都需要图像的版本标识符。您可以使用图像的修改日期(时间戳)。