cdn缓存过期时间
1. CDN缓存是什么意思
CDN缓存,作为网络技术中的一环,其主要作用在于优化内容分发与加速访问体验。当我们在网络上浏览网页、观看视频或访问图片时,有时会遇到加载缓慢、缓冲时间长等问题。CDN(Content Delivery Network)通过构建遍布全球的服务器网络,将内容缓存在这些服务器上,实现快速访问。
CDN缓存的工作原理是,当用户请求资源时,会优先从最近的CDN节点获取,以减少网络延迟,提高访问速度。这不仅减轻了源站服务器的负担,还能有效避免网络拥堵,确保用户获取内容的流畅性与稳定性。通过在不同地理位置部署节点,CDN能够实现高效的数据分发,满足用户对内容快速访问的需求。
在选择CDN服务时,可以根据自身需求与预算进行综合考量。大型云服务商如阿里云、腾讯云提供稳定、高效的服务,适合对安全性和可靠性有高要求的用户。而对于预算有限或对性价比有较高要求的用户,中型服务商如剑盾云等也是不错的选择。选择CDN服务时,除了关注服务商的网络覆盖范围、稳定性、服务质量外,还应考虑其价格、技术支持等因素,以确保选择到最适合自身需求的CDN服务。
2. CDN | CDN缓存规则及优先级
一条缓存规则,该规则表示html后缀的文件会缓存5分钟。
不管访问多少次,X-Cache 始终是 MISS,X-Swift-CacheTime 也一直为 0。
X-Cache 为 MISS,X-Swift-CacheTime 为 0,CDN不缓存。
X-Cache 为 MISS,X-Swift-CacheTime 为 0,CDN不缓存。
X-Cache 为 MISS,X-Swift-CacheTime 为 0,CDN不缓存。
试下能否正常被CDN缓存。
X-Cache 变成了 HIT,X-Swift-CacheTime 变成了 300,也就是CDN缓存5分钟。
缓存规则权重不同,有两条缓存规则,其中 /static/ 目录类型的权重最大,意味着优先级最高。
请求 /static/ 目录下 html 后缀的文件,看下匹配到哪条规则?
X-Swift-CacheTime: 120,这是匹配到了 /static/ 目录类型的规则。
缓存规则权重相同, html 文件后缀名的规则创建时间最早,正常情况应该是匹配到该条规则。
X-Swift-CacheTime: 300,确实匹配到了 html 文件后缀名规则。
CDN不要设置缓存规则,然后nginx配置内容如下,Cache-Control设置为60秒,Expires设置为120秒。
源站响应头部有 Cache-Control 、 Expires 、 Last-Modified 、 ETag ,测试看看哪个优先级最高。
X-Swift-CacheTime: 60,Cache-Control 的优先级高一些。
在nginx配置中将 add_header Cache-Control "max-age=60"; 去掉再试试。
X-Swift-CacheTime: 120,缓存规则是用 Expires 的时间了。
去掉nginx配置中的 expires 120s; 。
X-Swift-CacheTime 会随着时间变化,这是因为缓存过期了,CDN重新去源站拉取,然后重新计算缓存过期时间。
ok,最后一步,将 Last-Modified 响应头部给干掉。
只有 Etag 响应头部,不管访问几次,依旧是 X-Swift-CacheTime: 10。
将4个响应头部都干掉,看下CDN是否会缓存。
多次测试始终是 X-Cache: MISS 和 X-Swift-CacheTime: 0,这说明如果这4个响应头部都没了,CDN是不缓存的。
3. CDN加速应用中,如何解决DNS缓存问题
我看目前chinacache用的智能DNS
CDN好像也不能解决这个问题。而新浪用的就是chinacache,请问新浪是如何很好的处理这个问题的?
新浪的dns是自己的。这个问题本质上无解,好的方式是缩短纪录的有效期,但是有很多local
dns并不遵守这样的约定。
理想情况下,各地DNS的缓存时间即为设置的ttl时间,所以可以通过设置ttl时间来控制DNS缓存的时间。ttl时间设置的短,DNS缓存过期快,在机器故障的时候很快切换,对用户的影响小;但是由于ttl设置的太短,缓存很快过期,要经常一层层的问域名的解析情况,DNS解析时间会比较长。以上是理想情况,真实情况下,个别的DNS服务器并不遵从ttl时间,可能有做强制缓存多少时间,我们都没办法控制。