覆盖原图之后,长时间不更新


上传覆盖原图,在web的控制面版里下载的图是最新的,而直接访问的图还是老图,很长时间后,才可以得到新图,是缓存时间的问题吗?

有没有方法可以解决?

另外,当新图可以正常访问之后,通过 ?imageView 的形式访问图片,所得的图片还是旧图片的缩略图,一直没有更新。试了下更改 ?imageView 的参数的话,可以直接看到新图的缩略图,有没有可以 覆盖完图片文件之后直接显示最新的图片的api?

七牛云存储 node.js api 缓存

超级无比D蛋疼 11 years, 7 months ago

我也一直碰到这个问题,七牛和又拍都是这样。咨询过七牛的客服,也没有得到解决办法。

我估计,七牛和又拍在设计的时候,就没太考虑图片更新的问题,而是主要关注创建、删除等操作。

所以后来我用了这么个解决办法:

  1. 在创建图片以及每次更新图片前,为其生成一个新的版本号,记录到数据库中。 这个版本号可以是递增的数字,也可以是随机数字/字符
  2. 创建/更新/访问图片时,把这个版本号加到原本的图片名的后面。 例如图片名是 a.jpg,生成的版本号是 373,实际使用的图片名就是 a_v373.jpg
  3. 更新完成后,如果需要,可以把上一个版本的图片删除

有一个实际案例。我做了一个商品管理系统,每个商品有一个图片,这个图片是会经常更新的。
我的数据库就这样设计:


 goods
  id       int
  name     varchar(50)
  price    int
  pic_ver  int

生成HTML时就是(伪代码):


 for goods in goods_list:
  print '<img src="{goods.name}_v{goods.pic_ver}.jpg" />'

玩的就是心跳 answered 11 years, 7 months ago

Your Answer