如何使用Azure CDN加快网站速度

阿尔杰夫·戴夫(Arjav Dave)

什么是CDN?

内容交付网络(CDN)可帮助您更快地交付内容。您可以提供在一段时间内保持不变的任何类型的内容,例如图像,视频,CSS,JavaScript,HTML文件,PDF等。

CDN是分布在世界各地的一组服务器,用于从Edge服务器交付内容。边缘服务器是最靠近发出请求的位置的服务器。

根据请求,边缘服务器可以从其缓存中返回内容,也可以从原始服务器获取内容。提供实际内容的服务器称为原始服务器。

CDN概述

在上图中,边缘服务器位于世界各地,原始服务器位于美国加利福尼亚。发出请求后,位于印度孟买的边缘服务器如果无法提供内容,则可以与原始服务器联系。

CDN如何工作?

CDN具有四个主要部分:使用者,DNS,边缘服务器和原始服务器。

CDN详细信息

当消费者提出请求时,它首先会被其Internet服务提供商(ISP)接受。然后,ISP将访问内容提供商的“权威DNS”

权威DNS将DNS请求转换为IP请求。

建立权威DNS后,它将返回最近的边缘服务器的IP地址。然后,边缘服务器将签入自己的缓存,以查看请求的内容是否可用。

如果是,则返回内容。如果内容不可用,它将向原始服务器请求内容,并在检索时将其缓存。

CDN的好处

低带宽消耗

许多Web主机每月都有有限的带宽分配。如果超出此范围,您将被收取额外费用。

使用CDN,将节省大部分带宽,因为内容将由边缘服务器提供服务。

低延迟

边缘服务器缓存内容。因此,无论何时请求缓存的内容,等待时间都会大大减少。这是因为请求不会一直发送到原始服务器。

抵御DDoS的安全性

几乎所有流行的CDN都有能力保护您的Web服务器免受分布式拒绝服务(DDos)攻击。

改善SEO

加载时间是可能影响您网站的SEO排名的因素之一。如果您通过CDN提供大部分内容,则加载时间将大大减少,并且可以帮助您改善SEO。

深入了解Azure CDN

假设您已经创建了一个Azure存储帐户并托管了一个非常简单的站点,该站点将Hello World显示为h1。既然您已经知道CDN的好处,那么您想通过CDN服务简单的站点。

您将拥有一个类似于https://demostorageaccountarjav.z29.web.core.windows.net/的终结点(在这里,不是demostorageaccountarjav,而是您的存储帐户名称)。以下是有关如何设置静态网站的更多详细信息。

登录到您的Azure门户,然后单击从仪表板上创建资源。搜索CDN,这将打开市场中的资源,如下所示。

CDN创建资源
创建CDN

这将打开一个表单以创建CDN配置文件。CDN配置文件是一组CDN端点。除了名称,资源组和定价层之外,这里没有什么可填写的。

接下来,选中复选框以创建CDN端点。端点是消费者将在其中请求内容的地方。因此,如果您有多个站点,则也可以创建多个端点。

我随附了一个屏幕截图,供您参考要输入的值。由于CDN是全局服务,因此将禁用区域选择。

CDN详细信息
CDN详细信息

现在,您可以单击创建以生成配置文件和端点。创建将需要几分钟。创建它之后,当您进入主屏幕时,将具有以下4个资源:

Azure资源
Azure资源

如前所述,CDN配置文件是一组端点。要查看详细信息,请单击*端点资源。您将看到一个概述,并带有指向Endpoint主机名的链接。

端点概述
端点概述

当您打开端点主机名时,它最初可能会显示“ 404 not found”。您可能需要再等待10到15分钟,才能看到您的实际网站。

收益部分所述,您可以为安全性,缓存,路由和许多其他事情配置端点。您可以在此处探索更多选项。

如何通过SAS令牌访问

您可能想知道如果资源位于专用容器中并且只能通过共享访问签名(SAS)令牌进行访问,该怎么办。好吧,你是幸运的!查询字符串按原样传递,并且因为SAS作为查询字符串,所以您很好。

继续并创建一个新的存储帐户(禁用了静态网站)。在CDN配置文件中添加一个指向新创建的存储帐户的新端点。

出于演示目的,我创建了一个具有私有访问级别的名为site的容器。我已经在一个存储帐户中将一个名为Photo.jpeg的Blob上传到了URL https://demostorageaccountarjav.blob.core.windows.net

当然,您可以直接从Azure门户获取SAS令牌以进行测试,但这不是您通常在现实世界中所做的。为此,您将在下面找到一个简单的代码片段,以在Node.js中创建SAS令牌。

const azureSasToken = require('azure-sas-token');
 
// default token validity is 7 days
let sasToken = azureSasToken.createSharedAccessToken('https://<service namespace>.servicebus.windows.net/<topic name or queue>',
                                '<signature key name>',
                                '<signature hash>');
console.log(`sasToken: ${sasToken}`);
 
// Specify your own validity in secs, two hours in this example
sasToken = azureSasToken.createSharedAccessToken('https://<service namespace>.servicebus.windows.net/<topic name or queue>',
                                '<signature key name>',
                                '<signature hash>', 
                                60 * 60 * 2);
console.log(`sasToken: ${sasToken}`);

我们使用了一个简单的名为azure-sas-token的npm软件包。生成SAS后,您的URL将如下所示:

https://demostorageaccountarjav.blob.core.windows.net/site/Photo.jpeg?sp=r&st=2021-03-25T07:28:45Z&se=2022-02-02T15:28:45Z&spr=https&sv=2020-02-10&sr=b&sig=PD4HlRI8bDEirMevpYQgpx6drwh%2BE5EpILfXkQOMlvw%3D

上面的URL直接指向存储帐户。因此,继续并更改原点,以便它使用原点端点。

https://demowebsitearjav.azureedge.net/site/Photo.jpeg?sp=r&st=2021-03-25T07:28:45Z&se=2022-02-02T15:28:45Z&spr=https&sv=2020-02-10&sr=b&sig=PD4HlRI8bDEirMevpYQgpx6drwh%2BE5EpILfXkQOMlvw%3D

现在,当您访问此站点时,您将能够通过CDN查看受保护的资源。您可能需要等待几分钟和/或清除端点才能查看更新的内容。

点击阅读原文

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/5127.html

发表评论

登录后才能评论