图片后面添加时间戳后,每次请求都会重新获取图片吗?

查看 202|回复 14
作者:coolair   
比如,获取头像的地址是这样的 http://localhost/user/{id}/avatar
但是,img 标签的 src 用这个地址,如果换了头像就不会变了,考虑在链接后面添加时间戳:
"http://localhost/user/{id}/avatar?" + new Date().getTime()
这样的话,每次刷新/请求都是新的时间戳,如果头像没有修改,会一直重复下载图片吗?
我怕如果每次刷新都全部重新加载的话,会给服务器造成压力。

头像, 图片, 请求, img

ClarkAbe   
肯定会啊...query 变化了浏览器就不缓了...
bjzhush   
你这个时间戳参数加的莫名其妙的,可以说一下你为什么这么加
至于缓存,可以去看看浏览器的 etag last modified 等关于缓存控制的相关内容
如果你是想定时刷新,还有一种办法是可以通过参数控制周期,那就是把你刚刚的时间戳换成 ymd ,那么每天刷新一次,换成 ym ,那么每月刷新一次,不过常见的做法还是通过 Nginx 的一些 header 参数来控制缓存
x86   
服务器:顶住了,这把高端局
ShundL   
难道你上传的头像原始地址是固定的吗?
ShundL   
@ShundL #3 不好意思,理解错了,请无视
coolair
OP
  
@bjzhush 主要是链接固定,用户修改自己的头像后,页面上原有的图片不会更新。
296727   
用 etag 不需要管这些,或者直接用 oss ,不需要你来操心
bjzhush   
@coolair 那你可以在 user 表加一个 avatar 字段,用于存储用户的头像地址,这属于设计上的问题,没有必要增加本来不需要的技术复杂度,你自己注册几个网站,然后去换下头像,看看用户头像地址是怎么设计的,更换之后是怎么变化的
NoOneNoBody   
加时间戳本来就是为了抗缓存的,例如股票实时价格,当然股票这种也不会用静态图片
时间戳可以按变化频率定,太细自然是每次请求都重新下载,例如下个月就自动变换的图片,时间戳就细化到月份
您需要登录后才可以回帖 登录 | 立即注册

返回顶部