美文网首页
CDN | 明明设置了30天缓存时间,为啥还没到30天就回源了?

CDN | 明明设置了30天缓存时间,为啥还没到30天就回源了?

作者: 奶茶不要奶不要茶 | 来源:发表于2022-07-01 22:14 被阅读0次
    image.png

    突然朋友问了我个这样的问题:明明设置了30天缓存时间,为啥还没到30天就回源了?

    相信很多朋友也有这种问题,首先回忆一下CDN的请求流程:

    image.png

    首次:客户端 > CDN > CDN > 源站服务器 > CDN > CDN > 客户端
    后续:客户端 > CDN > 客户端

    首次请求因为未命中缓存所以要到源站服务器获取资源,等CDN服务器将资源缓存在本地后,后续客户端再来请求就由CDN服务器直接给客户端了,不用再去源站。

    既然都设置了30天的缓存时间,那理所应当是30天之后才会再次到源站服务器获取资源。
    其实这种说法不完全正确,30天是理想最大的过期时间,不出现意外的情况下,资源在CDN服务器上是可以缓存30天的。
    但是意外总是有的,比如CDN服务器坏了,里面的数据都丢了。后面CDN服务器搞好重新上线时,里面什么缓存都没有的,那你再次请求到CDN服务器是不是就会回源?

    还有以下情况。

    • 一个地区可能有多台CDN服务器,你第一次请求的CDN服务器是A,下次可能请求到的CDN服务器可能是B,然而CDN服务器B是没有缓存的,那这次请求是不是也回源了?(至于为啥CDN服务器A有缓存,CDN服务器B会没有缓存,这个问题以后有机会再细讲)
    • CDN服务器的存储空间有限,已经达到一定的阈值了,CDN服务器要清理那些请求量较少的资源,将存储空间腾出来给其他热门资源使用,等客户端再次请求也触发回源了。(可以理解为CDN服务器上的资源有末尾淘汰机制,就好比有些公司会淘汰掉那些业绩不理想的人,让出位置给更有能力的人)
    • 资源设置了30天缓存时间,只有第一天请求了1次,后面几天甚至大半个月都没有再请求过,然后就一直占着CDN服务器上的存储空间,也不产生请求量和流量,CDN服务器检测到就会将这些资源给清理掉了,腾出存储空间留给其他热门资源使用。(说难听点,这种就是占着茅坑不拉屎)

    除了以上的原因还有其他的,不一一举例了。

    那怎么才能避免出现上面的问题?
    CDN服务器坏掉的问题,这个没啥好的办法;其他三个问题,主要解决办法是提升网站的请求量,但也不能彻底解决只能起到缓解而已。
    网站每天必须有一定的请求量和流量,让资源保持热度,不然资源就有可能被淘汰掉。

    相关文章

      网友评论

          本文标题:CDN | 明明设置了30天缓存时间,为啥还没到30天就回源了?

          本文链接:https://www.haomeiwen.com/subject/jyqovrtx.html