V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
NGINX
cURL
selfcreditgiving
V2EX  ›  CDN

腾讯云 cdn 回源时,是回源节点和 客户端(浏览器)加起来两次请求嘛?

  •  
  •   selfcreditgiving · 2021-11-09 04:00:17 +08:00 · 1534 次点击
    这是一个创建于 1140 天前的主题,其中的信息可能已经有所发展或是发生改变。
    还是说 cdn 节点先请求到服务器的 response ,然后 cdn 节点再把缓存好的返回给客户端,只有一次请求。

    对 cdn 的一些细节不太了解,请多指教
    5 条回复    2021-11-09 09:38:25 +08:00
    eason1874
        1
    eason1874  
       2021-11-09 06:45:26 +08:00
    就一次,CDN 就是反代,中间人。Client -> CDN nodes -> Server

    如果没配置缓存,那客户端访问一次,CDN 就回源一次。服务器只是接收到一次 CDN 节点请求,客户端请求不会到达。

    如果配置了缓存,那客户端第一次访问,CDN 回源一次,缓存了,客户端再次访问时,CDN 节点上的缓存有效就直接返回缓存结果,不会回源(没有请求到达服务器)。

    但缓存配置只是建议,CDN 不会完全遵循,CDN 有自己的缓存策略。比如小文件你设置一个月那真的能缓存一个月,几十万次都没流量到服务器,而大文件,你设置一个月,可能几个小时没流量就给清理掉了,一天回源好几次。
    selfcreditgiving
        2
    selfcreditgiving  
    OP
       2021-11-09 07:10:26 +08:00
    @eason1874 了解了多谢。 我遇到一个问题,是我的一个 动态 api 被调用了两次,疑问是不是 客户端和 cdn 节点各访问了一次呢。 那应该不是这个原因了。

    对了,不要介意我 cdn 还缓存动态 api 的内容,我在测试 cdn 的功能,
    原先的代码也没有根据动静分离,分别用不同的域名
    比如 静态资源: static.domain.com/img.jpg 动态接口:apidomain.com/api/v1/getData
    都是用一样的相对路径 /img/img.jpg /getData
    eason1874
        3
    eason1874  
       2021-11-09 07:37:00 +08:00
    @selfcreditgiving CDN 控制台可以查询 IP 是不是 CDN 节点的,你把访问日志 IP 复制去查下就知道是不是 CDN 的请求了

    另外在控制台也可以设置回源 header ,你添加一个特别的回源 header ,不要泄露,然后把它加入到日志格式,就可以从日志一眼看出来是不是 CDN 回源的请求了。你还可以拒绝没有这个 header 值的访问,那可以确保访问全部经过 CDN
    selfcreditgiving
        4
    selfcreditgiving  
    OP
       2021-11-09 08:14:28 +08:00
    @eason1874 又想了想 CDN 本质上应该算一个 DNS 服务器,把我托管在 CDN 的域名,又重新分配给不同的 ip (根据地域不同分配地理位置最近的服务器 ip ),客户端(比如浏览器)拿到这个 ip 后去访问服务器。
    这个服务器如果没有请求的内容(也就是没有命中),就会触发回源。

    这里又有一个细节的问题想问了。 触发回源,cdn 服务器去回源地址取到数据后,假如我是北京的,要等 cdn 服务器把数据从主节点,一个个下发 直到下发到 北京那个节点的 cdn 服务器后, 我的请求(浏览器的)才能从北京那个节点收到返回结果嘛?

    那样触发一次回源不是比正常的直连会慢很多了。
    eason1874
        5
    eason1874  
       2021-11-09 09:38:25 +08:00
    @selfcreditgiving CDN 是反代服务,不是 DNS 服务。CDN 会提供一个 CNAME 域名,通过 DNS 把流量调度到 CDN 的不同节点,但这个不是 CDN 业务本身,只是流量调度方式之一。也有非 DNS 调度的,Anycast 方式。

    如果客户端网络条件足够好,服务器也能负载得起流量,经 CDN 回源再返回是会比直连慢一点的,不过影响微乎其微,几十毫秒到一两百毫秒,大部分场景是感觉不明显的。

    有一种 CDN 类型专门做了链路加速,优化反代速度,通常叫全站加速,会贵一些,适合要求毫秒级的客户。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   902 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:03 · PVG 06:03 · LAX 14:03 · JFK 17:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.