写点什么

云时代来临,快速利用 CDN 服务为海外用户访问国内网站加速

2017 年 8 月 31 日

众所周知,海外用户访问国内网站速度都不尽人意,主要原因是地理距离比较远,中国到海外的 Internet 出口带宽有限且中间还隔着"长城防火墙"。那我们有什么办法可以来加速海外用户对国内网站的访问速度么?答案就是 CDN 服务。本文主要就是介绍 CDN 服务提高海外客户访问国内网站的加速原理,海外 CDN 选择,快速配置以及问题释疑三个部分。

加速原理

CDN 全称 Content Delivery Network,中文为内容分发网络,基本思想是将客户要访问的数据尽可能地缓存到离客户最近的网络节点上。

没有 CDN 时,海外客户访问国内网站是这样的,海外客户的每次访问都必须从国内网站服务器读取数据,图片等内容。如下图

(点击放大图像)

有了CDN 后,CDN 网络自动把用户需要访问的网站文件Cache(缓存)到离客户最近的CDN 节点上,这个过程是CDN 网络智能判断和完成的,不需要客户人工介入,如下图:

(点击放大图像)

对上图做一个解释,我们国内的网站经过CDN 服务后会自动(主动/ 被动)同步到全球的CDN 节点,这样当海外客户再访问国内网站时,CDN 系统会智能将客户的访问引导到访问速度最快的CDN 节点上,从而大大加快客户的访问。这个示意不是特别严谨,如果大家希望特别深入的了解CDN 工作机制的话,建议大家可以阅读: http://baike.baidu.com/item/CDN/420951?fr=aladdin 以及其他文档,网上非常多,这里不做详细介绍。

海外 CDN 的选择,

如上图来看,我们可以发现 CDN 有几点特别重要:

  • 节点的数量和分布;
  • 智能系统的判断和路由;
  • 支持 CDN 的内容,比如是否静态网站,图片,视频,流媒体等;
  • 价格

针对国内网站出海来看,可以如下三种选择:

(点击放大图像)

如果你只是中小客户的话,我推荐云厂家提供的CDN 服务,配置简单,节点够用,性价比高。目前可以提供云CDN 服务的厂家无外乎微软的AZURE 和亚马逊的AWS,这里仅以微软Azure 为例。微软Azure 是全球云计算供应商领导企业,提供了数百种云计算服务,完全可以满足国内客户开拓海外业务使用。

Azure CDN 配置方式

首先您得有个 Azure 账号,Azure 可以在 www.azure.com 上去申请,绑定信用卡后按使用量后付费。

配置步骤如下:

第一步,配置 CDN 配置文件;

第二步,配置 CDN 终结点;

第三步,修改 DNS 中的 CANME 记录;

第四步,配置自定义域名

第一步,配置 CDN 配置文件:

(点击放大图像)

如上图,先配置一个CDN 配置文件/Profile,资源组和资源组位置随意,三种定价标准如下图:

(点击放大图像)

如果是纯静态网站,推荐大家使用S1 Verizon Standard,如果需要设置CDN 规则,建议使用P1 Premium Verizon,CDN 都是按照流量来收费,但是因为功能强大,高级版显然会比标准版贵一些。配完后应该如下图:

(点击放大图像)

第二步,配置终结点:

(点击放大图像)

说明:

Name 是 CDN 节点名,比如我输入 cdndemo,那么节点名就是 cdndemo.azureedge.net;

Origin type(原点类型),如果是对自有网站加速,选择 Custom origin;

Origin hostname,填写你的源网站的公网 IP 或者主机名,比如 65.52.189.183,不要加 http:// 的前缀。

特别提示(此处有坑):Origin hostname 中文会翻译成原点主机,会让人有点莫名其妙,但实际上是让您填写国内网站公网 IP 或者网站服务器主机名,千万不要填成国内网站域名,那样会在后面 DNS 配置中形成死循环导致网站无法访问。

Origin path 和 Origin host header 可以留空,不用填,协议可以单选 HTTP 或者 HTTP 和 HTTPS 都选择。

创建完成后如下图:

(点击放大图像)

配置完成后,CDN 节点会把 http://65.52.189.183 网站内容 Cache 到终结点即 http://fr-renesola.azureedge.net ,这会花费大约几十分钟的时间。

第三步,在 DNS 系统中增加 CNAME 记录

打开客户的域名管理系统,增加一条 CNAME 记录,主要是将原来的网站 URL 指向到 Azure

CDN 的终结点,即 XXX.azureedge.net。

特别提示(此处有坑):域名系统中一般有 A 记录或者 CNAME 记录,A 记录会优于 CNAME 记录,所以您需要删除 A 记录,主机纪录是您的国内网站地址,记录值是 Azure CDN 的终结点 XXX.azureedge.net. (注意最后有一个点 . ,不要漏了)。这一条 CNAME 的作用就是将原先访问国内网站的 url 导向 Azure CDN 的终结点。相当于在客户和源网站之间增加了一个 CDN 缓存层。至于客户去访问 CDN 网络中的哪一个节点,我们在原理中已经说过,智能 CDN 自动去判断并将客户指向到速度最快的节点。

第四步,设置自定义域名(必须)

在终结点页面中,增加自定义域名(Custom domain),主要是让智能 CDN 系统识别您的国内网站地址。在内部建立国内网站地址和 Azure CDN 终结点的对应关系。

(点击放大图像)

Custom hostname 就是源 URL,即国内网站访问地址。

特别提示(此处有坑):此处必须设置,否则你会发现,你可以访问 XXX.azureedge.net,但是从国内地址无法访问到终结点,会一直显示打不开网站页面。

上面四步做完,您可以完成了一个国内网站在全球的内容分发,您会发现不论您的客户在全球哪一个角落,他都可以快速的打开您的国内网站。

问题释疑

上面步骤只是做了一个简单的演示,在实际使用中,客户往往还会有个性化需求,比如:

问:是否可以只 Cache 图片,视频等静态元素

答:完全可以,选择 P1 Premium Verizon,在规则引擎中设置规则,譬如:

(点击放大图像)

上图仅为示例,aspx、asp、php 等动态页面不做 CDN 缓存,mp4 和 wmv 做 CDN 缓存,这样确保客户访问时可以得到网站动态信息。

问:网站返回页面链接有字符串时如何处理?比如 http://xxxxx?id=1,id=X 不同值代表不同的 Session。

答:可以在 Cache 设置中不缓存查询字符串,不同用户得到不同的访问链接。

(点击放大图像)

2017 年 8 月 31 日 09:241597

评论 1 条评论

发布
用户头像
如果源站是https站呢?配置之后好像会出现证书问题
2019 年 01 月 27 日 10:34
回复
没有更多了
发现更多内容

人民版权 获2020中国产业区块链创新奖

CECBC区块链专委会

区块链 产业发展 版权

LeetCode题解:155. 最小栈,单个栈同时存储最小值,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

易观CTO郭炜:如何构建企业级大数据Ad-hoc查询引擎

易观大数据

【译】Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases 上篇

花里胡哨

分布式数据库 异步 Amazon Aurora 日志驱动

Vue+Springboot项目部署

ZRK

Vue 前后端分离 springboot 部署

controller-manager的主动驱逐

Geek_f24c45

Kubernetes k8s

深入了解 Rust 异步开发模式

lipi

rust 异步

mPaas研发流程和线上运维介绍

阿里云金融线TAM SRE专家服务团队

ios android

银行大数据新玩法,构建“一湖两库”金融数据湖

华为云开发者社区

大数据 数据湖 FusionInsight MRS DWS

Redis 持久化--AOF

是老郭啊

redis redis持久化 aof

区块链支付系统开发方案,usdt跑分系统搭建

WX13823153201

Spring整合WebSocket

牛初九

JAVA,.NET项目开发难上手?Learun敏捷开发框架解君愁

Philips

Java 敏捷开发 .net core

Spring Boot中获取配置的一些方法

Geek_416be1

Spring Boot 2

10万奖金等你拿!2020第四届易观OLAP算法大赛火热开启

易观大数据

Redis常见问题--哈希冲突

是老郭啊

哈希表 Redis项目

OpenKruise:Kubernetes 核心控制器 Plus

郭旭东

Kubernetes 云原生 OpenKruise

NodeX Component - 滴滴集团 Node.js 生态组件体系

滴滴普惠出行

开发者的福音,LR.NET模块化代码生成器

Learun

Java 敏捷开发 .net core 计算机程序设计艺术 软件设计

向云再出发:如数据般飞驰的内蒙古

脑极体

看百度技术专家如何深入研究,重复使用的代码经验——设计模式

周老师

Java 编程 程序员 架构 设计模式

JVM 内存模型、字节码、垃圾回收面试要点

escray

学习 面试 垃圾回收 字节码 面试现场

Redis常见问题--单线程

是老郭啊

nosql redis 线程

消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?

yes的练级攻略

分布式事务 RocketMQ kafak 事务消息

一个空格引发的“救火之旅” - 记一次 SOFA RPC 的排查过程

阿里云金融线TAM SRE专家服务团队

一文带你深扒ClassLoader内核,揭开它的神秘面纱!

我没有三颗心脏

Java ClassLoader java基础 类加载器

开发任务管理分析报告

森林

OFD版式技术深度解读:卷首语

华宇法律科技

版式文档 OFD

新基建迎来风口 新人才仍有缺口

CECBC区块链专委会

人工智能 新基建 数字化基础

数字化转型需要低/零代码平台的支持

代码制造者

低代码 数字化转型 企业信息化 零代码 编程开发

数字人民币钱包短暂露面 金融诈骗伺机而起

CECBC区块链专委会

数字货币 钱包 货币

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

云时代来临,快速利用CDN服务为海外用户访问国内网站加速-InfoQ