更改头像后不刷新问题,有解决建议代码:
更改头像后不刷新问题,有解决建议代码:
By shiqiren
at 2015-08-11
0人收藏 • 1618人看过
//获取头像,主要是读取文件的修改时间,加到图片路径后面 function GetAvatar($UserID, $UserName, $Size = 'middle') { global $Config; $filename='/upload/avatar/' . $Size . '/' . md5($UserID) . '.png'; $editTime=filemtime($_SERVER['DOCUMENT_ROOT'].$filename); $filename.='?t='.$editTime; return '<img src="' . $Config['StaticDomainName'] . $filename.'" alt="' . $UserName . '"/>'; }
- 登录后方可回帖
4 个回复 | 最后更新于 2015-08-11
回复#1 @shiqiren :
这样写,每次访问帖子列表,都会有几十次I/O操作,I/O压力会有些大吧,大并发量下势必导致页面请求失败。
还不如把Web Server里静态资源HTTP Header里的Expired关掉,然后让图片每次都返回304。
实际上,我觉得应该让用户在上传后,如果判断上传成功,前端用iframe载入三个尺寸的avatar,并对获取三个iframe的对象,对其执行:
location.reload()
强制刷新客户端缓存,这样用户就可以看到自己的头像更新了,至于其他用户,就等Expired再看新头像了。
这样对于节约服务器资源非常有效。
或者就跟我上面那样说的,直接关掉HTTP Header里的Expired。
回复#3 @lincanbin :
你提醒了我,只需要对当前用户自己的头像加时间戳即可,并根据一些机制自动更新自己的头像