本帖最后由 Zapic 于 2019-9-22 08:20 编辑 
开篇暴怒:Ctrl+F5就是个辣鸡!手机用户怎么死的?如果别人换头像了你怎么知道我需不需要Ctrl+F5?
Ctrl+F5的弊端说完了.
不行还是得再总结一下:
1.手机用户憋屈.
2.用户主动式,体验极差.
3.全部资源重载,浪费时间(js和css以及一些静态资源如表情是不需要重载的)(既然是CDN就不考虑压力增加的问题了).
4.我甚至敢打赌超过60%的人还不知道我的头像已经倒过来了.
以下是我想的一些非主动式强制刷新头像缓存的一些方法:
1.直接锤后端(基于PHP的处理方法)
原本,你的头像可能是这样输出成HTML标签的:
复制代码
加一个随机参数就好了:
复制代码
当然,可以设置一个global的seed,一小时换一次.
由于请求的URL不同,那么头像自然而然会被重新请求,但是参数并没有什么实际作用,也没有处理的必要.
2.前端锤后端(基于js的处理方法)
有两种:
一是用js修改img元素的src属性,使其全部带上一个随机参数.
二是xhr主动请求刷新.
js不熟,就说一个思路吧(其实是懒)…
使用xhr主动请求所有头像URL,并在请求时带上禁用缓存的头,以实现刷新缓存的效果.
3.论坛横着走(直接修改缓存机制)
像整附件一样再绑个域名作为请求头像的专用vhost同时这个域名禁用所有缓存(x
反正,我觉得,劝用户Ctrl+F5是最蠢的操作.
Ctrl+F5的弊端说完了.
不行还是得再总结一下:
1.手机用户憋屈.
2.用户主动式,体验极差.
3.全部资源重载,浪费时间(js和css以及一些静态资源如表情是不需要重载的)(既然是CDN就不考虑压力增加的问题了).
4.
以下是我想的一些非主动式强制刷新头像缓存的一些方法:
1.直接锤后端(基于PHP的处理方法)
原本,你的头像可能是这样输出成HTML标签的:
- <img src="<?php echo this->getAvatar();?>"/>
加一个随机参数就好了:
- <img src="<?php echo this->getAvatar();echo "?seed=".rand(1,10000);?>"/>
当然,可以设置一个global的seed,一小时换一次.
由于请求的URL不同,那么头像自然而然会被重新请求,但是参数并没有什么实际作用,也没有处理的必要.
2.前端锤后端(基于js的处理方法)
有两种:
一是用js修改img元素的src属性,使其全部带上一个随机参数.
二是xhr主动请求刷新.
js不熟,就说一个思路吧(
使用xhr主动请求所有头像URL,并在请求时带上禁用缓存的头,以实现刷新缓存的效果.
像整附件一样再绑个域名作为请求头像的专用vhost同时这个域名禁用所有缓存(x
反正,我觉得,劝用户Ctrl+F5是最蠢的操作.
dz有提供随机参数的办法的,但是我个人还是认为头像没必要使用,毕竟本来就是不常更新的玩意儿
我是百分之四十(不会又有个新人集翔物十连卡把)
小胖橘 发表于 2019-9-22 09:36
我是百分之四十(不会又有个新人集翔物十连卡把)
萝卜圈?
gamerteam 发表于 2019-9-22 09:13
dz有提供随机参数的办法的,但是我个人还是认为头像没必要使用,毕竟本来就是不常更新的玩意儿 ...
如果仔细掰一下手指,大概有个位数的人求助为什么换头像并没有什么卵用.
所以至少在换过头像后强制刷一下缓存吧…
头像不是经常换,但是头像一换就要等一个月缓存,实着有些反人累.
至少也要保证一天之内能够让所有人看到新的头像吧.
Zapic 发表于 2019-9-22 12:53
如果仔细掰一下手指,大概有个位数的人求助为什么换头像并没有什么卵用.
所以至少在换过头像后强制刷一下 ...
强制刷新缓存试过,不知道为什么线上后就没生效
该问题也在修补计划中,但优先度较低