CDN刷新策略
发布文章,但是浏览器没有更新,这就是使用CDN,尤其是全站加速之类的CDN后,会面临一个问题。
这个问题的解决是需要根据自己的实际使用情况处理的。
问题来源
主要的问题来源就是CDN服务的缓存策略。一般的,CDN服务与我们的源站可能不是同一家服务商,那么这两家治之间就不会有服务上面的联系。因此,你的源站更新了,CDN并不知道你已经更新了。
因此,一个比较符合源站更新频率的策略就非常重要。
适合的时长就是最好的
如果网站更新不频繁,那么CDN缓存时间应该建议尽可能长,这里不是说系统支持的时长,而是你能接受的时长。应该说,视你更新网站的情况而定,没有最好的时间,适合的才是最好的。
全站加速(G-core labs)
对于CDN来说,最好还是使用全站加速,动态文件和静态文件都能通过CDN来缓存,真正实现全方位的保护。参考我的文章:
但是,这里也会存在缓存更新的问题,例如G-core labs的推荐缓存时间为4天,我认为如果是比较勤快的博主,写的文章要等4天才能刷新,是不是有点长。对于G-core labs的缓存原理,我也在学习和测试。
E-tag
看官方文档,对缓存时间也有简要描述,大概意思是,缓存时间到期后,会去源站抓取E-tag,通过对比源站的网页E-tag和CDN上的E-tag,如果一致就进入下一个周期,如果不一致,就抓取源站的内容替换CDN上的内容,实现内容同步。
因此,这里就有一个新概念:E-tag。着是什么东西?我也去查了一下,是比较基础的Web服务组件。大概的功能就是,每个页面会有一个E-tag标签,携带了唯一编码,每次修改都会改变编码。CDN服务端会在缓存到期后,抓取源站的E-tag信息,与CDN端进行比对,如果有区别,说明源站已经更新,那么就会丢弃CDN端缓存,从源站重新抓取内容进行缓存。这样,CDN端就更新了新的内容了。如果没有区别,那么CDN端就会进入下一个周期,到期后再去抓取源站信息。