我的网站有一个头像上传功能,允许用户上传头像。问题是,如果用户试图上传另一个头像,他们的浏览器缓存会一直显示他们之前的头像,直到他们进行硬刷新(Ctrl + F5)或清除浏览器的缓存。
目前,这是我用来显示头像的方法:
<img src="{{ secure_asset('storage/avatars/' . $user_id . '/avatar.png') }}" />在用户上传新的头像后,我如何刷新头像的缓存,以便显示他们的最新头像而不是旧的头像?
发布于 2017-08-12 04:16:43
你可以利用“缓存破坏”。保存图像时,可以将版本号保存到用户表中。因此,当用户第一次保存头像时,将avatar_version列设置为1。上传新头像时增加版本号。所以当你拿到它的时候,你可以调用
<img src="{{ secure_asset('storage/avatars/' . $user_id . '/avatar.png')."?version=".$user->avatar_version }}" />如果GET参数改变,它不会影响文件,但浏览器会将其识别为不同的图像,并抓取这个新图像。
发布于 2017-08-12 03:18:20
缓存是由浏览器完成的,从服务器端你不能控制浏览器缓存功能,所以你不能从后端更新用户的浏览器缓存。
您可以通过传递适当的http头来显式地告诉浏览器不要缓存该特定网页。以便始终从服务器而不是从缓存加载该特定页面。
对于php,你可以使用下面的头文件
header('Cache-Control: no-cache');
header('Pragma: no-cache');您也可以使用HTML执行此操作
<meta http-equiv="Expires" content="Tue, 14 Aug 2017 12:12:12 GMT">
<meta http-equiv="Pragma" content="no-cache">https://stackoverflow.com/questions/45641387
复制相似问题