博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
七牛云存储更新缓存图片的方法
阅读量:5773 次
发布时间:2019-06-18

本文共 2203 字,大约阅读时间需要 7 分钟。

昨天我想更改一下我的评论表情包,但是无意间发现我把原来的表情包删了,然后换上新的表情包,但是没有效果,表情还是原来的,我删除了缓存还是没有 任何效果,于是F12查看了一下表情的路径后才发现原因:表情的路径是七牛,因为我使用了CDN加速,原来的图片资源都已经缓存到了七牛,那么我网站打开 的时候就涉及到一个优先级的问题,就是说打开网站之后会检查图片等资源是否已经缓存,如果缓存过就会加载缓存的旧的资源,如果没有缓存才加载本地资源,所 以这就可以解释上面的情况了:因为我的评论表情图片已经缓存过了,所以就算我本地修改了还是没有加载出来,而是使用缓存的旧的表情,那么怎么解决呢?很显 然就想到了删除旧的缓存,或者说更新缓存,然后就可以了,我网上找了很多的资源,最后终于解决了。

下面说说删除七牛缓存的方法:(3种)
首先建议大家操作之前先关闭CDN加速功能,比如我使用的是WP super cache的CDN加速,我是关闭之后再删除的缓存文件,然后删除缓存之后再重新打开CDN加速功能,推荐大家这样操作。好了,看下面三种方法吧:
1.登陆七牛的管理平台,在“内容管理”中删除缓存的旧文件。
2. 登陆 WordPress 管理后台,在七牛的缓存插件中找到“文件更新”的选项,同样输入旧文件的路径即可。当提示成功信息时,就表示旧文件已经删除掉了,七牛会重新缓存新文件。
3.(推荐) 登陆七牛的管理平台,依次打开“空间设置”——“高级设置”——“缓存刷新”,在“去刷新”的弹出框中输入旧文件的路径即可。一次最多可输入10个url地址。
上面介绍的三种文件更新方式,我使用的是第三种,也推荐大家使用第三种(注意,浏览器本身也有缓存功能,因此要查看更新,可以重开一个浏览器,或者使用浏览器的强制刷新功能 Ctrl + F5),千万记住一般情况都需要清除缓存才能看见效果 :grin:
后来我使用了第三个方法,大概几分钟就生效了。因此大家在更新文件时,可以尝试不同的方法。
这里有一篇七牛官方的关于缓存机制的介绍,感兴趣的可以看一下,为自己理解七牛的缓存和自己的使用提供帮助。

七牛云存储缓存机制
浏览器缓存
用户从浏览器(或者 App 客户端)请求一个 URL 时,浏览器首先会判断该资源曾经是否被请求过是否被缓存过,如果该资源在客户端被缓存了,就会直接返回给客户端。这是浏览器的缓存。目前七牛云存储会在输 出每个资源时输出 Cache-Control: public, max-age=31536000 和 ETag: FsODI_568V_-16UxMM7JzqyS2Hx0 这样的头部来进行缓存控制。该 Cache-Control 头部表示该请求可以在客户端缓存一年时间,31536000 为秒,表示从当前时间开始的相对时间,在该时间内访问同一个 URL,浏览器不会再次向服务端请求,而是会直接将浏览器缓存中的资源返回给客户端用户。ETag是该资源在服务器端的 “指纹”。当请求头部的 Cache-Control 时间过期之后,浏览器会向服务端发送请求新文件的新请求,该请求会带上这个 Etag 做验证,判断所请求的资源在服务端是否确实有变化。值得注意的是,由于 Cache-Control 设置的时间为一年,当服务端有更新时,需要在浏览器强制刷新浏览器才可能发送验证 Etag 的请求。
CDN 缓存
用户从浏览器请求一个七牛云存储上的资源后,七牛云存储会将其分发到离用户最近的 CDN 节点上缓存下来,用户访问到的时 CDN 上的资源。用户下次再次向七牛的服务端请求的时候,访问到的还是 CDN 缓存中的资源。因此,资源在七牛的服务端更新之后,不一定能够立即反馈到客户端。
目前,我们的做法是,在七牛存储上的资源更新之后,需大约 10 分钟左右时间让 CDN 上的缓存失效。用户可在 10 分钟后看到最新的资源。如果 10 分钟后客户端还没看到缓存更新,可以先排查下客户端的浏览器缓存是否已经失效,如果没有失效可以采用强制刷新的形式来访问最新资源。
如果浏览器端强制刷新也无效,可能是因为当前 CDN 节点中的该缓存尚未失效(这种情况很少见)。要确认 CDN 缓存是否过时,可以在 URL 后面加上版本参数的形式来让 CDN 强制刷新,比如 http://ikbear.qiniudn.com/iphone.jpg?v=20130910。CDN 拿到这个 URL 后会强制回七牛的存储中取回最新的资源。这种加版本的方法仅用于验证 CDN 缓存是否失效,要想正确使用版本的方法管理 CDN 缓存,参见下面的 “CDN 缓存最佳实践” 一节。
如果确认 CDN 缓存比较旧,可以使用我们的管理后台https://portal.qiniu.com/ => 选择一个空间 => 空间设置 => 高级设置 => 缓存刷新 来进行缓存的强制刷新。
CDN 缓存最佳实践
我们整理了 CDN 缓存相关的最佳实践:
http://developer.qiniu.com/resource/best-practice-of-qiniu.pdf
供参考。

参考网址:
http://xuzefeng.cn/20150131/1897
http://kb.qiniu.com/Qiniu-Cloud-Storage-Cache-Strategy

转载地址:http://jvaux.baihongyu.com/

你可能感兴趣的文章
Hive安装
查看>>
实验四 主存空间的分配和回收
查看>>
股票API
查看>>
linux的打包与解压
查看>>
poj2349
查看>>
Django的模板系统
查看>>
实现AJAX局部刷新以及PageMethod方法的使用
查看>>
RabbitMQ 安装
查看>>
静态构造函数(C# 编程指南)
查看>>
规格化设计-----JSF(第三次博客作业)
查看>>
件测试专家分享III GUI自动化测试相关
查看>>
hdu 5807 分步dp
查看>>
exgcd、二元一次不定方程学习笔记
查看>>
经典sql
查看>>
CSS3边框会动的信封
查看>>
JavaWeb实例设计思路(订单管理系统)
查看>>
source insight中的快捷键总结
查看>>
PC-IIS因为端口问题报错的解决方法
查看>>
JavaScript学习笔记(12)——JavaScript自定义对象
查看>>
SQL中的Null深入研究分析
查看>>