阿里云CDN实践

0.前言

经常看到一些网站上的图片,img src都是这样式的:

https://img3.uzaicdn.com/ba/sightGallery/ATT0000699099.jpg?imageView2/2/w/679/h/466

京东的:

img30.360buyimg.com/img/s260x260_jfs/t1/203631/40/6996/196172/61449d46Ee5b89604/becdc87f124c4908.jpg!cc_130x130.webp 

他们都用了CDN,怎么搞出来这样的url?下面用阿里云实验一把!

阿里云CDN简介

简介:https://help.aliyun.com/document_detail/27101.html?spm=5176.208361.1107621.2.543057e0d7oHZi

前提:已经购买并备案域名wolia.xyz

1.购买CDN

2.CDN控制台

https://cdn.console.aliyun.com/overview

阿里云CDN实践

3.域名管理-添加域名

添加一个二级域名,img1.wolia.xyz (现在还没有创建此二级域名记录,等会要在域名解析控制台去创建)输入到下图加速域名输入框。

阿里云CDN实践

(a)首次添加域名身份验证

由于您是首次添加该域名,需要验证该域名的归属权后,方能添加域名。

如果一个域名首次被添加到CDN控制台,您需要完成域名的归属权验证,确保域名只被真正的拥有者添加,避免出现用户A的域名被用户B添加导致域名冲突及安全隐患问题。验证通过CDN视为您拥有该域名,您在CDN控制台再次添加该域名或子域名时,不需要再次验证。

两种方式,这里用文件验证方式,上传verification.html到nginx根目录

1.DNS解析验证

阿里云CDN实践

2.文件验证

下载并上传verification.html到nginx根目录。

/usr/local/openresty/nginx/html

阿里云CDN实践

(b)业务信息

阿里云CDN实践

(c)添加源站信息

源站就是你的文件源所在的服务器,可以添加oss、IP、域名、编程式配置。

阿里云CDN支持的源站类型包括OSS域名、IP、源站域名和函数计算域名,每种源站类型都支持配置多个源站地址,多源站场景下,支持设置源站的主备优先级和权重,实现负载均衡。本文介绍如何新增或修改源站信息及源站的健康检查策略。

阿里云CDN实践

阿里云CDN实践

4.添加成功

阿里云CDN实践

5. 配置缓存过期时间

访问速度慢常与命中率低有强关系,推荐配置缓存过期时间、过滤参数提升命中率。

请设置静态资源缓存时间,缓存时间设置将有效提升资源的命中率,提升访问性能,减少回源 。

缓存过期时间指资源在CDN节点上缓存的时长。CDN的默认缓存时间最短为10秒,最长为3600秒,资源过期后会自动从CDN节点删除,您向CDN节点发起的访问请求会被判定为无效,请求会回源站获取最新资源并缓存到CDN节点。您可以根据业务需求,按目录或文件后缀名配置静态资源的缓存过期时间。

阿里云CDN实践

阿里云CDN实践

过期时间
资源对应的缓存过期时间,最长可以设置3年。设置规则如下:不常更新的静态文件:例如,图片类型、应用下载类型等,建议设置1个月以上。频繁更新的静态文件:例如,JS、CSS等,根据实际业务情况设置。动态文件:例如,PHP、JSP、ASP等,建议设置为0s,即不缓存。

阿里云CDN实践

设置了目录和图片的失效时间

阿里云CDN实践

6.域名解析控制台-配置加速域名的CNAME

CNAME就是将一个域名指向另一个域名。这里要操作的就是,将上面配置的二级域名 img1.wolia.xyz 指向阿里云的cdn域名,将两者建立关系。

将域名img1.wolia.xyz 指向了 img1.wolia.xyz.w.kunlunaq.com,这样访问img1.wolia.xyz就转发到了 img1.wolia.xyz.w.kunlunaq.com,

配置CNAME

点击【打开配置向导】会给img1.wolia.xyz生成右侧弹框内容,去域名解析控制台,将这些给wolia.xyz 配置一条CNAME

阿里云CDN实践

域名解析控制台: https://dns.console.aliyun.com/#/dns/setting/wolia.xyz

添加记录

阿里云CDN实践

域名 img1.wolia.xyz
CNAME记录值 img1.wolia.xyz.w.kunlunaq.com
主机记录 img1
记录类型 CNAME

按照CDN配置向导里面的内容 添加

阿里云CDN实践

阿里云CDN实践

7.验证

二级域名转发到了oss

阿里云CDN实践

oss上传一张图片

阿里云CDN实践

通过域名img1.wolia.xyz访问图片

阿里云CDN实践

http response header信息

Accept-Ranges: bytes
Age: 2630
Ali-Swift-Global-Savetime: 1635473258
Connection: keep-alive
Content-MD5: jzczkFRlFbBj3rcdC+htig==
Content-Type: image/jpeg
Date: Fri, 29 Oct 2021 02:07:38 GMT
EagleId: 6f0db3d616354758880384604e
ETag: "8F373390546515B063DEB71D0BE86D8A"
Last-Modified: Thu, 28 Oct 2021 10:21:42 GMT
Server: Tengine
Timing-Allow-Origin: *
Via: cache39.l2cn2633[281,297,304-0,M], cache28.l2cn2633[298,0], cache13.cn416[0,0,304-0,H], cache14.cn416[2,0]
X-Cache: HIT TCP_IMS_HIT dirn:10:104339440
x-oss-cdn-auth: success
x-oss-hash-crc64ecma: 4772944304294313553
x-oss-object-type: Normal
x-oss-request-id: 617B576A5DFDD131332F3380
x-oss-server-time: 1
x-oss-storage-class: Standard

8.加速原理

通过以下案例,您可以了解CDN的工作原理。

假设您的加速域名为www.a.com,接入CDN开始加速服务后,当终端用户在北京发起HTTP请求时,处理流程如下图所示。

阿里云CDN实践

  1. 当终端用户向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
  2. LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
  3. 当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。
  4. 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
  5. LDNS获取DNS返回的解析IP地址。
  6. 用户获取解析IP地址。
  7. 用户向获取的IP地址发起对该资源的访问请求。
    • 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如图中步骤7和8,此时请求结束。
    • 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后结合用户自定义配置的缓存策略,将资源缓存到CDN节点并返回给用户,例如图中的北京节点,此时请求结束。配置缓存策略的操作方法,请参见配置缓存过期时间

9.一些概念

https://help.aliyun.com/document_detail/27102.html

本文介绍阿里云CDN产品中涉及的一些基本概念,便于您更准确地理解和使用CDN产品。

源站

源站是指运行用户业务应用的Web服务提供方。源站可用来处理和响应用户请求,当边缘节点没有缓存用户请求的内容时,节点会返回源站获取资源数据并返回给用户。阿里云CDN的源站可以是OSS域名、IP、源站域名或函数计算域名。

边缘节点

边缘节点是CDN用于缓存源站资源,以便快速响应不同地域用户请求的网络节点。在阿里云CDN的帮助文档中,边缘节点、CDN节点、Cache节点、缓存节点、加速节点、阿里云节点等都指阿里云CDN的边缘节点。

加速域名

加速域名是您接入CDN用于加速的域名,终端用户实际访问的域名。例如,用户通过aliyun.com进行访问,aliyun.com即为加速域名。

阿里云CDN通过加速域名,将源站资源缓存到CDN加速节点,实现资源访问加速。在阿里云CDN的帮助文档中,加速域名通常被简写为域名。

说明 域名(Domain Name)又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

CNAME记录

CNAME(Canonical Name)记录即别名记录,用来把一个域名解析成另一个域名,再由另一个域名提供源站服务。

例如,您在一台服务器上存放了很多资料,使用example.aliyundoc.com访问服务器上的资源,但又希望通过demo.aliyundoc.com也能访问,您可以在您的DNS解析服务商添加一条CNAME记录,将demo.aliyundoc.com指向example.aliyundoc.com,所有访问demo.aliyundoc.com的请求都会被转发到example.aliyundoc.com

CNAME域名

在CDN控制台添加加速域名后,系统会给该域名自动分配一个*.*kunlun*.com形式的CNAME域名。

您需要在您的DNS解析服务商处添加一条CNAME记录,将加速域名指向CNAME域名。记录生效后域名解析就正式转向CDN服务,该域名所有的请求都将转向CDN的边缘节点,达到加速效果。

静态内容(静态资源)

静态内容是指用户多次请求某一资源,响应返回的数据都是相同的内容。例如图片、视频、网站中的文件(HTML、CSS、JS)、软件安装包、APK文件、压缩包文件等。

CDN通过加速域名将源站的静态资源缓存到CDN遍布全球的加速节点上,供用户就近访问,实现资源访问加速。

动态内容(动态资源)

动态内容是指用户多次请求某一资源,响应返回的数据可能是不同的内容。例如网站中的文件(ASP、JSP、PHP、PERL、CGI)、API接口、数据库交互请求等。

阿里云CDN只能加速静态资源,如果需要加速动态资源,可以使用阿里云全站加速产品。详细说明,请参见什么是全站加速

DNS

DNS(Domain Name System)即域名解析服务,可以将域名转换成网络可以识别的IP地址。人们习惯记忆域名,但机器间互相只识别IP地址。域名解析就是把域名指向网站IP地址,让用户通过该域名即可访问到您网站的一种服务。域名解析需要由专门的域名解析服务器来完成,整个过程自动进行。例如,您上网时输入的www.example.com会自动转换成220.181.112.143(举例说明,具体IP以实际为准)。

阿里云的DNS解析产品是云解析DNS。详细信息,请参见云解析DNS

SSL/TLS

SSL(Secure Sockets Layer)即安全套接字协议,SSL协议位于TCP/IP协议与各种应用层协议之间,可以有效协助Internet上的应用软件提升通讯时的资料完整性及安全性。IETF将SSL标准化后名称被改为TLS(Transport Layer Security),即传输层安全协议,因此通常将两者并称为SSL/TLS。

回源

当用户通过浏览器发送请求时,如果CDN节点未缓存请求的资源或缓存资源已到期,此时会回源站获取资源并返回给用户,该过程被称为回源。

回源HOST

回源HOST,即CDN节点回源时实际请求的域名。默认情况,回源HOST为加速域名,当源站服务器上提供多个域名服务时,您可根据业务需求指定CDN节点回源时在访问的具体域名。

例如,您期望CDN回源时实际请求的地址为example-origin.com,与加速域名www.example.com不同,那么您需要配置回源HOST为example-origin.com

回源协议

回源协议指CDN节点回源时使用的协议,与客户端访问资源时使用的协议相同。例如,当客户端使用HTTPS方式请求未缓存在CDN节点上的资源时,CDN节点会使用相同的HTTPS方式回源站获取资源。

过滤参数

通过过滤参数,您可以根据实际业务需要,决定在缓存时是否过滤用户请求URL中?

  • 开启过滤参数,CDN节点会截取不带参数的URL向源站请求,且CDN节点仅保留一份副本。
  • 关闭过滤参数,每个不同的URL会缓存不同的副本在CDN节点上。

如果您的URL中不同参数代表相同的内容,建议开启过滤参数,有效提升缓存命中率。

上一篇:关于提升网站的响应速度的一个想法


下一篇:webpack优化之配置排除打包与引用网络资源