突然朋友问了我个这样的问题:明明设置了30天缓存时间,为啥还没到30天就回源了?
相信很多朋友也有这种问题,首先回忆一下CDN的请求流程:
首次:客户端 > CDN > CDN > 源站服务器 > CDN > CDN > 客户端
后续:客户端 > CDN > 客户端
首次请求因为未命中缓存所以要到源站服务器获取资源,等CDN服务器将资源缓存在本地后,后续客户端再来请求就由CDN服务器直接给客户端了,不用再去源站。
既然都设置了30天的缓存时间,那理所应当是30天之后才会再次到源站服务器获取资源。
其实这种说法不完全正确,30天是理想最大的过期时间,不出现意外的情况下,资源在CDN服务器上是可以缓存30天的。
但是意外总是有的,比如CDN服务器坏了,里面的数据都丢了。后面CDN服务器搞好重新上线时,里面什么缓存都没有的,那你再次请求到CDN服务器是不是就会回源?
还有以下情况。
除了以上的原因还有其他的,不一一举例了。
那怎么才能避免出现上面的问题?
CDN服务器坏掉的问题,这个没啥好的办法;其他三个问题,主要解决办法是提升网站的请求量,但也不能彻底解决只能起到缓解而已。
网站每天必须有一定的请求量和流量,让资源保持热度,不然资源就有可能被淘汰掉。