七牛云解决缓存导致的无法及时更新问题

本文介绍了七牛云中maxAge值和CDN缓存时间的区别,以及如何应对业务需求中的文件更新问题。在处理缓存导致的无法及时更新时,提出了四种策略:调整缓存时间、更改文件名、使用刷新接口和添加随机参数。其中,添加随机参数的方法能在确保及时更新的同时,有效控制回源流量和成本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

七牛云在后台配置有两个和缓存相关的配置,一个是maxAge值--客户端缓存,一个是cdn缓存

maxAge值和CDN缓存时间的区别?

访问资源链接时,缓存通常分为浏览器缓存和CDN节点缓存。
用户在浏览器中输入资源链接访问时,优先使用浏览器缓存,缓存失效或禁用本地缓存后,会向CDN节点请求资源,当CDN缓存时间超时后,会向源站发起资源请求。

  • Cache-Control:max-age:设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒),控制用户浏览器端的缓存。
  • CDN缓存:当CDN缓存超时后,节点认为缓存失效,会向源站重新请求资源。

现在例如有一个业务需求是客户更新logo,那我们需要及时更新,可是正常的上传是无法及时更新的,因为七牛云会有客户端缓存和cdn缓存,这时候可能有多种处理方式:

1.cdn和客户端缓存的时间调短,例如1分钟,这样每分钟就都会更新,我们覆盖上传文件后一分钟后就能查看到新的。

优点:操作方便。

缺点:这会导致七牛云的回源流量增多,数据量大的情况下会增加很多费用。

七牛云的云文件读取机制如下:

2.每次更新的时候,更改文件名,如果上传成功,则删掉老文件。

优点:也能成功。

缺点:有点麻烦

3.每次覆盖上传,然后调用刷新接口:

优点:不是很难处理,也能实现

缺点:调用刷新接口后也要等七牛云的队列处理,有时候会阻塞很久,因为是队列处理也是异步。

4.(推荐)每次上传还是覆盖上传,然后将文件名加上随机参数进行访问,并且随机参数只有在更新的情况下会更新,也就是说要把这个文件名加随机数的保存起来,例如:

第一次传,文件名:‘a.jpg’,域名:www.bcd.com ,随机数:123456,在不更新的情况下,往后访问的外链就一直是‘http://www.bcd.com/a.jpg?123456’

第二次更新,文件名:‘a.jpg’,域名:www.bcd.com ,随机数:666666,在不更新的情况下,往后访问的外链就一直是‘http://www.bcd.com/a.jpg?666666’。

缺点:需要把随机数也保存起来

有点:及时更新就能及时访问到,并且cdn溯源流量只在更新的时候会产生,其他时候不会产生,并且是覆盖文件,所以不需要删除老文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值