目前正在开发Symfony 3应用程序。我创建了一个服务,允许用户上传图像,然后选择裁剪部分,最后以特定的高度和宽度保存头像。头像保存在/web/img/uploads/avatar/文件夹中。我使用用户id来命名文件。因此,id为13的用户将其化身保存在/web/img/uploads/avatar/13.png中。
我的问题是,当用户更新他的头像时,文件夹中的文件被正确地替换了,但在实际的网站上,显示的头像在一段时间内仍然是旧的。在开发环境中,在新的头像替换旧的头像之前需要几分钟的时间。即使我转到头像url (localhost/app_dev.php/img/uploads/avatar/xxx.png),我仍然会看到旧头像一段时间,直到它最终被新头像取代。然而,正如预期的那样,文件系统中的头像会立即被替换。
我想这可能是从缓存里取来的。我试着在谷歌上搜索解决方案,但我找到的都是关于LiipImagineBundle及其缓存管理器的,但我没有使用这个捆绑包……
我试着删除旧的头像,如果它存在,在弄清楚它的名字之后,在实际裁剪和保存图像之前。如下所示。
if(file_exists($dst)) {
unlink($dst);
}但它不起作用。完全没有。
有什么想法吗?
发布于 2017-03-03 00:28:55
正如bxN5所说,这绝对是浏览器缓存。但是我不同意改变标题。如果您选择通过修改缓存头来管理这一点,这将迫使您永久删除这些图像的缓存,或者让web浏览器询问您的服务器这些图像是否已被修改(下载的字节较少,但每次调用时都会有额外的请求)。
我认为更好的方法是通过更改图像名称或添加查询字符串来更改图像url。在这两种情况下,您都需要映像的版本标识符。您可以使用镜像的修改日期(时间戳)。
https://stackoverflow.com/questions/42559055
复制相似问题