1. <em id="2qvri"><tr id="2qvri"></tr></em>
      1. 首页»WEB综合»CDN 科普

        CDN 科普

        来源:叶子坑-文档库 发布时间:2019-03-18 阅读次数:

        一、概述

        1.1 含义

        CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心?#25945;?#30340;负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,?#26723;?#32593;络?#31561;?#25552;高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。 —— 摘自《百度百科

        名?#24335;?#37322;:

        • Origin Server:源站,源服务器
        • User:访问者
        • Edge Server:CDN 的服务器

        1.2 核心技术点

        • 内容存储技术
        • 内容分发技术
        • 负载均衡技术

        1.3 CDN 优势

        • 加速:基于 CDN 各节点,就近获取内容
        • ?#26723;?#36127;载:基于 CDN 缓存,减少源站的访问
        • 成本低:费用成本、部署成本
        • 可扩展性强:基于边缘计算

        二、原理

        2.1 流程图

        简化版流程图

        ?#35745;?#26469;源 AWS

        相对“完整版”流程图

        ?#35745;?#26469;源 阿里云

        2.2 缓存原理

        看个 PHP 缓存的例子:

        <?php
        
        $result = Cache::remember('url', 100, function () {
            return 'Hello world...';
        });
        

        大多数的缓存原理如上面例子,基于 URL 的维度进行 Hash 运算后生成唯一的字符,基于该字符进行缓存的获取与存储。

        当涉及静态资源的更新操作的时候,更多的除了使用 URL 维度外,还会依靠附加参数的形式,进行 CDN 缓存的“更新”。但这个“更新”实际是静态资源生成新的 CDN 缓存。

        总结

        在实际的应用中,HTTP 请求的任何参数均可作为 CDN 缓存的维度,用来组合 Hash 生成唯一字符。

        这些维度包括 URL、参数、Header等。但维度的增加也同样意味着 CDN 缓存命中率的?#26723;汀?/p>

        我们来看个例子:

        1. https://docs.flc.io/favicon.ico
        2. https://docs.flc.io/favicon.ico?v=1
        3. https://docs.flc.io/favicon.ico?v=1&b=2
        4. https://docs.flc.io/favicon.ico?b=2&v=1

        以上 4 种情况,如首次访问,即使资源相同,但因为参数的原因, CDN 缓存均未命中。

        基于第 3、4 点,有些 CDN 服务商还额外支持参数排序后在 Hash,目的就是为了提高命中率。

        2.3 Response Headers

        大多数 CDN 服务商会在资源请求的 Response Headers 中输出一些涉及缓存命中、CDN 节点、Hash字符、过期时间等信息。

        如图:

        2.4 刷新预热

        刷新(即:清理 CDN 缓存)

        通过提供文件 URL 或目录的方式,强制CDN节点回源拉取最新的文件。

        预热

        将指定的内容主动预热到 CDN 的节点上,用户首次访问即可直?#29992;?#20013;缓存,?#26723;?#28304;站压力。

        一般大规模迁移的时候,会使用到

        2.5 CDN 常见功能

        1. 自定义缓存过期时间规则:支持配置自定义资源的缓存过期时间规则, 支持指定路径或者文件名后缀方式, 支持 Header 输出缓存过期时间
        2. 自定义 header 头:如 Access-Control-Allow-Origin: * 以实现跨域
        3. 自定义页面:支持设置404、403、503、504等页面
        4. 页面优化:去除HTML页面页面冗余内容如注释以及重复的空白符
        5. 智能压缩:对静态文件类型进行压缩, 有效减少用户传输内容大小
        6. 访问控制:Refer防盗链、IP 黑/白名单等
        7. HTTPS 支持
        8. 统计分析、日志管理
        9. 人工智能服务:识图、鉴黄等

        脑回路时间

        依靠第以上几点,能实现哪些应用?

        三、实例说明

        3.1 静态资源加速

        这个大?#21494;?#25026;,就不细说

        3.2 后端加速(缓存)—— 自定义缓存时间

        含 CDN 但未命中:

        <?php
        
        echo 'Hello World!!!!!~';
        

        设置 10s 的 CDN 缓存:

        <?php
        
        header('expires: '.date('D, d M Y H:i:s e', time() + 10));
        
        echo 'Hello World!!!!!~';
        

        以上例子为阿里云 CDN,具体设置缓存过期时间,请参照 CDN 服务商文档进行设置。

        对于动态文件(eg:php | jsp | asp),建议设置缓存时间为 0s,即不缓存;若动态文件例如 php 文件内容更新频?#24335;?#20302;,推荐设置较短缓存时间

        —— 摘自《阿里云说明文档

        参考文档:

        QQ群:WEB开发者官方群(515171538),验证消息:10000
        微信群:?#26377;?#32534;微信 849023636 邀请您加入,验证消息:10000
        提示:更多精彩内容关注微信公众号:全栈开发者中?#27169;╢sder-com)
        CDN
        网友评论(共0条评论) 正在载入评论......
        理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
        登录会员中心
        江苏快3投注技巧 [七星彩走势图表]坐标连线 天津快乐十分中奖表 4月巴斯蒂亚vs里昂现场 澳洲三分彩的开奖网站 重庆快乐10分开奖 辽宁十一选五开奖号20190808 797通比牛牛 六彩曾道人 11月1日nba比分情况 安徽竟彩专家8月10日推荐 北京赛车开奖直播 36选7开奖结果查询 矩阵的万能公式 11选5最大遗漏爱彩乐 山东11选5任4技巧