<li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    首页»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条评论
    登录会员中心
    大乐透彩票预测
    <li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    <li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    贵州快三的开奖结果走势图 中国足彩在线 吉林快三助赢网页版 上海快3遗漏数据查询 七乐彩矩阵分析 湖北十一选五8个号 全国福彩开奖 时时彩技巧 江西快3走势 山东11选5体彩 期平特三肖 中国体育彩票36选7 2019年白小姐正版资料稳赢 双色球18086 浙江双色球基本走势图