简介:
将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。
阿里云CDN将您源站资源缓存至阿里云遍布全球的加速节点上,当终端用户请求访问和获取这些资源时,无需回源,系统将就近调用CDN节点上已经缓存的资源。
- 终端用户(北京) 向
www.a.com
下的某资源发起请求,会先向 LDNS 发起域名解析请求。 - 当 LDNS 解析
www.a.com
时,会发现已经配置了 CNAMEwww.a.tbcdn.com
。 - 解析请求会发送至阿里云DNS调度系统,并为请求分配最佳节点 IP。
- LDNS 获取 DNS 返回的解析 IP。
- 用户获取解析 IP。
- 用户向获取的 IP 发起对该资源的访问请求。
- 若该 IP 对应的节点已经缓存了该资源,则会将数据直接返回给用户(如图中步骤7、8),此时请求结束。
- 若该节点未缓存该资源,则节点会向业务源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略(可参考产品文档中的缓存配置),将资源缓存至节点(如图:北京节点),并返回给用户,此时请求结束。
业务场景:
业务场景 | 场景概述 |
---|---|
图片和小文件下载 | 网站或应用App的主要业务为图片小文件,主要包括各类型图片、html、css、js小文件等。 |
大文件下载 | 网站或应用App的主要业务为大文件下载,平均单个文件大小在20M以上,如游戏及各类客户端下载,APP下载商店等。 |
视频点播加速 | 网站或应用App的主要业务为视频点播,或短视频类。支持MP4、FLV等主流视频格式。 |
HTTPS加速 | 对CDN加速有更高级的安全需求。 |
视频直播加速 | 网站或应用App的主要业务为视频直播类服务。 |
使用步骤:
- 在控制台域名管理的域名列表中复制加速域名对应的CNAME地址。
- 前往您的域名解析(DNS)服务商(如万网、阿里云解析、DNSPod、新网、route 53、godaddy等),添加该CNAME记录。
CDN是针对某个域名进行加速的。如果该域名完成了加速配置,那么这个域名下面的文件的访问都会通过CDN。
CDN加速的内容:
CDN加速的内容只能是静态内容。那么什么是静态内容、动态内容?
静态内容/静态资源
静态内容指的是例如 图片、视频、网站中的html、css、js文件、软件安装包、apk文件、压缩包文件、…等 在不同请求中访问到的数据都一样的 “静态”文件。
CDN加速的本质是缓存加速,是将您服务器中的这些静态内容缓存在阿里云CDN的节点上,当您的用户们需要访问这些静态内容时就不必访问您的服务器,而是就近访问阿里云CDN的节点就能获取到一样的资源。从而达到“加速”的效果,另一方面也减轻您服务器源站的压力。
动态内容/动态资源
动态内容指的是例如 网站中的 .asp、.jsp、.php、.perl 、.cgi文件、API接口、数据库交互请求…等 在不同请求中访问到的数据会不一样的“动态”内容。
动态内容需要用户每次都访问您的服务器,由您的服务器动态生成实时的数据并返回。因此CDN是的缓存加速不适用于加速动态内容,CDN无法缓存数据实时变化的动态内容。对于动态内容的请求,CDN节点只能转发回您的服务器源站,没有加速效果。
如果网站或App应用有较多动态内容,例如需要对各种API接口进行加速,则需要使用 阿里云全站加速 DCDN 产品。
全站加速能同时加速动态和静态内容:静态内容使用CDN加速,动态内容通过阿里云的路由优化、传输优化等动态加速技术以最快的速度访问您的服务器源站获取数据。从而达到“全站”加速的效果。
CDN使用问题:
1.如何使用过滤参数。
阿里云的CDN基础配置中,过滤参数是用于忽略URL请求中"?"之后的参数,提高CDN缓存的命中率。例如:
第一次访问
http://www.****.com/1.jpg
,CDN没有缓存,直接回源访问数据。第二次访问
http://www.****.com/1.jpg?test1
,由于开启了过滤参数"?",所以"?"后面的参数无需匹配,即可命中CDN缓存http://www.****.com/1.jpg
。后续访问,不论"?"后面带的是什么参数,均命中缓存
http://www.****.com/1.jpg
。
关闭【过滤参数】后,访问URL需精确匹配"?"之后的参数,提高请求的精确性。例如:
第一次访问
http://www.****.com/1.jpg
,CDN没有缓存,直接回源访问数据。第二次访问
http://www.****.com/1.jpg?test1
,由于关闭了过滤参数"?",所以"?"后面的参数需精确匹配,即无法响应CDN缓存内容http://www.****.com/1.jpg
,需要重新回源拉取http://www.****.com/1.jpg?test1
。后续访问,"?"后面的参数要与CDN缓存精确匹配才能响应CDN缓存内容。只有精确匹配"?"后面的参数,才能响应CDN缓存内容。
2.如何在源文件和CDN加速文件不一致时,刷新CDN缓存?
在更新源站内容后,同时刷新CDN节点的缓存,这样才能保证源站内容与CDN的缓存内容保持一致。
URL刷新
强制将CDN CACHE节点上的某些文件设置为已过期,以达到重新回源更新的目的,会在5-10分钟之内生效;同一个ID每天最多只能刷新2000个URL。
注:输入的URL必须带有http://
目录刷新
强制将CDN CACHE节点上的某个目录的文件均设置为已过期,以达到重新回源更新的目的,适用于多内容较多的的场景。一般会在30分钟内生效。一天最多提交100个刷新请求。
注:所输入内容,需以http://
开始,以/
结束。并且目录刷新一定要在目录刷新这个页签操作才行,否则在URL刷新页签成功后只刷新单URL,并不包括目录下的所有文件。
3.CDN默认缓存策略。
缓存时间计算
- t =(savetime - last_modified)*0.1
- t = max(10, t)
- t = min(t, 3600)
缓存时间为t,单位秒
默认缓存规则
- 当对象last-modified为20140801 00:00:00,当前时间为20140801 00:01:00, (curtime-Last_modified)*0.1=6s,那么缓存时间为10s,因为最小值为10s
- 当对象last-modified为20140801 00:00:00,当前时间为20140802 00:00:00,(curtime-Last_modified)*0.1=8640s,那么缓存时间为3600s
- 当对象last-modified为20140801 00:00:00,当前时间为20140801 00:10:00,(curtime-Last_modified)*0.1=60s,那么缓存时间为60s
- 如果源站没有 Last-Modified 响应头,但有 ETag,则该对象极有可能是静态资源,将其默认缓存时间设置为 dft_expires 指令配置的最小值
- 如果源站没有 Last-Modified,也没有 ETag,则认为该对象为动态内容,将其默认缓存时间设置为 0,每次都回
4.服务器设置缓存策略。
可分为设置nginx,apache,IIS 缓存策略配置。