结合使用 Office 365 内容分发网络和 SharePoint Online

可以使用内置的 Office 365 内容分发网络 (CDN) 来托管静态资产,以便提高 SharePoint Online 页面的性能。 Office 365 CDN 将静态资产缓存到距离请求这些资产的浏览器更近的位置,这样可以加快下载速度并减少延迟,进而提高性能。 此外,Office 365 CDN 使用 HTTP/2 协议来改进压缩和 HTTP 管道。 Office 365 CDN 服务被归入 SharePoint Online 订阅。

警告

由于映像现在在 SharePoint Online 服务托管的专用 CDN 中自动管理,因此手动配置的专用 CDN 正在弃用。 此行为意味着客户不再需要配置专用 CDN。 建议的做法保持不变,因为映像通过服务托管的专用 CDN 自动托管。 公共 CDN 继续可用于所有其他文件类型 (例如 CSS 和 JS) 。 将专用 CDN 用于除映像以外的文件类型的客户需要将这些文件移动到公共 CDN 中。 建议为这些文件类型使用公共 CDN,以提高性能。

注意

Office 365 CDN 仅适用于全球 ) 云的生产 (租户。 美国政府云和中国云中的租户当前不支持 Office 365 CDN。

Office 365 CDN 由多个 CDN 组成,用户可以在多个位置(即)托管静态资产,并从全局高速网络提供这些资产。 可以添加公共源、私有源或同时添加这两种源,具体取决于想要托管在 Office 365 CDN 中的内容种类。 有关 公共源和专用源 之间的差异的详细信息,请参阅选择每个源是公共源还是专用源。

Office 365 CDN 概念图。

如果已经熟悉 CDN 的工作方式,只需完成几个步骤即可为租户启用Office 365 CDN。 本文将介绍其操作方法。 请继续阅读,了解如何开始托管静态资产。

提示

还有其他 Microsoft 托管的 CDN 可用于专用使用方案的Office 365,但本主题中未讨论,因为它们不属于Office 365 CDN 的范围。 有关详细信息,请参阅 其他 Microsoft CDN

回到Office 365的网络规划和性能优化

在 SharePoint Online 中使用 Office 365 CDN 的概述

若要为组织设置Office 365 CDN,请执行以下基本步骤:

完成设置后,可以通过以下方式在一段时间内管理Office 365 CDN

  • 添加、更新和删除资产
  • 添加和删除源
  • 配置 CDN 策略
  • 如有必要,请禁用 CDN

最后,请参阅 使用 CDN 资产 ,了解如何从公共源和专用源访问 CDN 资产。

有关解决常见问题的指导,请参阅排查Office 365 CDN

规划Office 365 CDN 的部署

在为Office 365租户部署Office 365 CDN 之前,应考虑以下因素作为规划过程的一部分。

确定要在 CDN 上托管的静态资产

通常,CDN 对于托管 静态资产或不经常更改的资产最为有效。 一个很好的经验法则是识别满足以下部分或全部条件的文件:

  • 嵌入在页面中的静态文件 (,例如脚本和图像) ,这可能对页面加载时间产生重大影响。
  • 可执行文件和安装文件等大型文件。
  • 支持客户端代码的资源库。

例如,将重复请求的小文件 (网站图像和脚本) 添加到 CDN 源可以显著提高网站呈现性能,并逐步减少 SharePoint Online 网站上的负载。 可以从 CDN 下载更大的文件 (安装可执行文件) ,从而提供积极的性能效果,并随后减少 SharePoint Online 网站上的负载,即使它们不经常被访问也是如此。

每个文件的性能改进取决于许多因素,包括客户端与最近的 CDN 终结点的邻近性、本地网络上的暂时性条件等。 许多静态文件很小,可以在不到一秒内从Office 365下载。 但是,网页可能包含许多嵌入式文件,其累积下载时间为几秒。 从 CDN 中提供这些文件可以显著缩短总体页面加载时间。 有关示例 ,请参阅 CDN 提供哪些性能提升?

确定要存储资产的位置

CDN 从称为的位置获取你的资产。 源可以是可通过 URL 访问的 SharePoint 网站、文档库或文件夹。 为组织指定源时,可以非常灵活。 例如,可以指定要在其中放置所有 CDN 资产的多个源或单个源。 可以为组织选择公用或专用源。 大多数组织会选择将两者结合使用。

可以为源(如文件夹或文档库)创建新容器,并添加要从 CDN 提供的文件。 对于想要从 CDN 获取的特定资产集,这是一种很好的方法,并且你希望将 CDN 资产集限制为仅容器中的那些文件。

还可以将现有网站集、网站、库或文件夹配置为源,使容器中的所有合格资产都可以从 CDN 中使用。 在添加现有容器作为源之前,请务必确保了解其内容和权限,以免无意中向匿名访问或未经授权的用户公开资产。

可以定义 CDN 策略 ,以从 CDN 中排除源中的内容。 CDN 策略按 文件类型网站分类等属性排除公共或专用源中的资产,并应用于在策略中指定的专用或公共) (CdnType 的所有源。 例如,如果添加由包含多个子网站的站点组成的专用源,则可以定义一个策略来排除标记为 机密 的网站,以便不会从 CDN 中提供应用了该分类的网站中的内容。 该策略适用于添加到 CDN 的所有 专用源中的内容。

请记住,源数量越大,对 CDN 服务处理请求所花费时间的影响越大。 建议尽量限制源的数量。

选择每个源应是公共源还是专用源

标识源时,可以指定应将其设为 公共 源还是 专用源。 对公共源中的 CDN 资产的访问是匿名的,专用源中的 CDN 内容由动态生成的令牌保护,以提升安全性。 无论你选择哪个选项,Microsoft 都会在管理 CDN 本身时为你完成所有繁重的工作。 此外,在设置 CDN 并标识源后,可以稍后改变主意。

公用和专用选项的性能提升效果类似,但每个选项都具有独特的属性和优势。

Office 365 CDN 中的公共源可以匿名访问,并且具有资产 URL 的任何人都可以访问托管资产。 由于对公共源中的内容的访问是匿名的,因此应仅使用它们来缓存非敏感泛型内容,例如 JavaScript 文件、脚本、图标和图像。

Office 365 CDN 中的专用源提供对 SharePoint Online 文档库、网站和专有图像等用户内容的专用访问。 对专用源中内容的访问由动态生成的令牌保护,因此只有对原始文档库或存储位置具有权限的用户才能访问该令牌。 Office 365 CDN 中的专用源只能用于 SharePoint Online 内容,并且只能通过从 SharePoint Online 租户重定向访问专用源中的资产。

有关对专用源中资产的 CDN 访问工作原理的详细信息,请参阅 使用专用源中的资产

在公共源中托管资产的属性和优势

  • 每个人都能匿名访问公用源中公开的资产。

    重要

    切勿将包含用户信息或被视为对组织敏感的资源置于公共来源中。

  • 如果从公共源中删除资产,该资产可能从缓存中继续可用长达 30 天;但是,我们会在 15 分钟内使指向 CDN 中的资产的链接失效。

  • 如果将样式表(CSS 文件)托管到公用源,可以在代码内使用相对路径和 URI。 此结果意味着可以引用背景图像和其他对象相对于调用它的资产的位置。

  • 虽然可以构造公共源的 URL,但应谨慎继续操作,使用页面上下文属性,并按照操作指南进行操作。 如果无法访问 CDN,则 URL 不会自动解析到 SharePoint Online 中的组织,并可能导致链接断开和其他错误。 URL 也可能会更改,因此不应将其硬编码为当前值。

  • 公共源包含的默认文件类型为:.css、、、.eot.gif.js.jpeg.png.jpg.ico.map.svg、、 .ttf和 。 .woff.woff2 可以指定其他文件类型。

  • 可以将策略配置为基于指定的网站分类排除资产。 例如,可以排除标记为“机密”或“受限”的所有资产,即使它们是允许的文件类型并且位于公共源中。

在专用源中托管资产的属性和优势

  • 专用源只能用于 SharePoint Online 资产。

  • 如果用户有权访问容器,则只能从专用源访问资产。 禁止匿名访问这些资产。

  • 专用源中的资产必须从 SharePoint Online 租户引用。 无法直接访问专用 CDN 资产。

  • 如果从专用源中删除资产,该资产可能从缓存中继续可用长达一小时。 但是,在删除资产后的 15 分钟内,CDN 中的资产链接无效。

  • 默认情况下,支持为专用源添加下列类型的文件:.gif、.ico、.jpeg、.jpg、.js 和 .png。 可以指定其他文件类型。

  • 就像使用公共源一样,你可以配置策略以排除由指定的网站分类标识的资产,即使使用通配符将所有资产包含在文件夹或文档库中也是如此。

有关为何使用 Office 365 CDN、常规 CDN 概念以及可用于Office 365租户的其他 Microsoft CDN 的详细信息,请参阅内容分发网络

默认 CDN 源

除非另行指定,否则Office 365启用 Office 365 CDN 时为你设置一些默认源。 如果最初选择不预配源,可以在完成设置后添加这些源。 除非你了解跳过默认源设置的后果,并且有这样做的具体原因,否则应在启用 CDN 时允许创建它们。

默认专用 CDN 源:

  • */siteassets

默认公共 CDN 源:

  • */masterpage
  • */样式库
  • */clientsideassets

注意

clientsideassets 是 2017 年 12 月添加到 Office 365 CDN 服务的默认公共源。 必须存在此源,才能使 CDN 中的SharePoint 框架解决方案正常工作。 如果在 2017 年 12 月之前启用了 Office 365 CDN,或者如果在启用 CDN 时跳过了默认源的设置,则可以手动添加此源。 有关详细信息,请参阅我的客户端 Web 部件或SharePoint 框架解决方案不起作用

使用 SharePoint Online 命令行管理程序设置和配置 Office 365 CDN

本部分中的过程要求使用 SharePoint Online 命令行管理程序连接到 SharePoint Online。 有关说明,请参阅Connect to SharePoint Online PowerShell

完成这些步骤,使用 SharePoint Online 命令行管理程序设置和配置 CDN 以在 SharePoint Online 中托管资产。

选择展开

使组织能够使用 Office 365 CDN

在对租户 CDN 设置进行更改之前,应检索Office 365租户中专用 CDN 配置的当前状态。 使用 SharePoint Online 命令行管理程序连接到租户:

Connect-SPOService -Url https://contoso-admin.sharepoint.com

现在,使用 Get-SPOTenantCdnEnabled cmdlet 从租户中检索 CDN 状态设置:

Get-SPOTenantCdnEnabled -CdnType <Public | Private>

屏幕上会显示指定 CdnType 的 CDN 状态。

使用 Set-SPOTenantCdnEnabled cmdlet 使组织能够使用 Office 365 CDN。 可以让组织一次性使用公共源和/或专用源。 还可以将 CDN 配置为在启用时跳过默认源的设置。 稍后可以随时添加这些源,如本文所述。

在 sharePoint Online Windows PowerShell中:

Set-SPOTenantCdnEnabled -CdnType <Public | Private | Both> -Enable $true

例如,若要使组织能够同时使用公共源和专用源,请键入以下命令:

Set-SPOTenantCdnEnabled -CdnType Both -Enable $true

若要使组织能够同时使用公共源和专用源,但跳过设置默认源,请键入以下命令:

Set-SPOTenantCdnEnabled -CdnType Both -Enable $true -NoDefaultOrigins

有关启用Office 365 CDN 时默认预配的源的信息,以及跳过默认源设置的潜在影响,请参阅默认 CDN 源。

若要使组织能够使用公共源,请键入以下命令:

Set-SPOTenantCdnEnabled -CdnType Public -Enable $true

若要使组织能够使用专用源,请键入以下命令:

Set-SPOTenantCdnEnabled -CdnType Private -Enable $true

有关此 cmdlet 的详细信息,请参阅 Set-SPOTenantCdnEnabled

更改要包含在 Office 365 CDN 中的文件类型列表 (可选)

提示

使用 Set-SPOTenantCdnPolicy cmdlet 定义文件类型时,将覆盖当前定义的列表。 如果要向列表添加其他文件类型,请先使用 cmdlet 了解已允许的文件类型,并将其与新文件类型一起包含在列表中。

使用 Set-SPOTenantCdnPolicy cmdlet 定义可由 CDN 中的公共和专用源托管的静态文件类型。 默认情况下,允许使用常见资产类型,例如.css、.gif、.jpg 和 .js。

在 sharePoint Online Windows PowerShell中:

Set-SPOTenantCdnPolicy -CdnType <Public | Private> -PolicyType IncludeFileExtensions -PolicyValue "<Comma-separated list of file types >"

例如,若要启用 CDN 以托管.css和 .png 文件,请输入 命令:

Set-SPOTenantCdnPolicy -CdnType Private -PolicyType IncludeFileExtensions -PolicyValue "CSS,PNG"

若要查看 CDN 当前允许的文件类型,请使用 Get-SPOTenantCdnPolicies cmdlet:

Get-SPOTenantCdnPolicies -CdnType <Public | Private>

有关这些 cmdlet 的详细信息,请参阅 Set-SPOTenantCdnPolicyGet-SPOTenantCdnPolicies

更改要从 Office 365 CDN 中排除的网站分类列表 (可选)

提示

使用 Set-SPOTenantCdnPolicy cmdlet 排除网站分类时,将覆盖当前定义的列表。 如果想要排除其他网站分类,请先使用 cmdlet 了解哪些分类已被排除,然后将其与新分类一起添加。

使用 Set-SPOTenantCdnPolicy cmdlet 排除不希望通过 CDN 提供的网站分类。 默认情况下,不排除任何网站分类。

在 sharePoint Online Windows PowerShell中:

Set-SPOTenantCdnPolicy -CdnType <Public | Private> -PolicyType ExcludeRestrictedSiteClassifications  -PolicyValue "<Comma-separated list of site classifications >"

若要查看当前限制的网站分类,请使用 Get-SPOTenantCdnPolicies cmdlet:

Get-SPOTenantCdnPolicies -CdnType <Public | Private>

返回的属性是 IncludeFileExtensionsExcludeRestrictedSiteClassificationsExcludeIfNoScriptDisabled

IncludeFileExtensions 属性包含从 CDN 提供的文件扩展名的列表。

注意

默认文件扩展名在公共和专用之间是不同的。

ExcludeRestrictedSiteClassifications 属性包含要从 CDN 中排除的网站分类。 例如,可以排除标记为 机密 的网站,以便不会从 CDN 中提供应用了该分类的网站中的内容。

ExcludeIfNoScriptDisabled 属性根据站点级别的 NoScript 属性设置排除 CDN 中的内容。 默认情况下,NoScript 属性设置为“为新式网站启用”,将“经典网站禁用”。 这取决于租户设置。

有关这些 cmdlet 的详细信息,请参阅 Set-SPOTenantCdnPolicyGet-SPOTenantCdnPolicies

为资产添加源

使用 Add-SPOTenantCdnOrigin cmdlet 定义源。 可以定义多个源。 源是 SharePoint 库或文件夹的 URL,其中包含要由 CDN 托管的资产。

重要

切勿将包含用户信息或被视为对组织敏感的资源置于公共来源中。

Add-SPOTenantCdnOrigin -CdnType <Public | Private> -OriginUrl <path>

path 的值是包含资产的库或文件夹的相对路径。 除了相对路径之外,还可以使用通配符。 源支持在 URL 前面附加的通配符。 这允许你创建跨多个站点的源。 例如,若要将所有站点的 masterpages 文件夹中的所有资产作为 CDN 中的公共源包含在 CDN 中,请键入以下命令:

Add-SPOTenantCdnOrigin -CdnType Public -OriginUrl */masterpage
  • 通配符修饰符 */ 只能在路径的开头使用,并且与指定 URL 下的所有 URL 段匹配。
  • 路径可以指向文档库、文件夹或网站。 例如,路径 */site1 与网站下的所有文档库匹配。

可以添加具有特定相对路径的源。 不能使用完整路径添加源。

本示例在特定网站上添加 siteassets 库的专用源:

Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl sites/site1/siteassets

以下示例在网站集的网站资产库中添加 folder1 文件夹的专用源:

Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl sites/test/siteassets/folder1

如果路径中有空格,则可以用双引号将路径括起来,或者将空格替换为 URL 编码 %20。 以下示例在网站集的网站资产库中添加 文件夹 1 文件夹的专用源:

Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl sites/test/siteassets/folder%201
Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl "sites/test/siteassets/folder 1"

有关此命令及其语法的详细信息,请参阅 Add-SPOTenantCdnOrigin

注意

在专用源中,从源共享的资产必须先发布主版本,然后才能从 CDN 访问这些资产。

运行 命令后,系统会跨数据中心同步配置。 此结果最多可能需要 15 分钟。

示例:为母版页和 SharePoint Online 样式库配置公共源

通常,启用 Office 365 CDN 时,默认会为你设置这些源。 但是,如果要手动启用它们,请执行以下步骤。

  • 使用 Add-SPOTenantCdnOrigin cmdlet 将样式库定义为公共源。

    Add-SPOTenantCdnOrigin -CdnType Public -OriginUrl */style%20library
    
  • 使用 Add-SPOTenantCdnOrigin cmdlet 将母版页定义为公共源。

    Add-SPOTenantCdnOrigin -CdnType Public -OriginUrl */masterpage
    

有关此命令及其语法的详细信息,请参阅 Add-SPOTenantCdnOrigin

运行 命令后,系统会跨数据中心同步配置。 此结果最多可能需要 15 分钟。

示例:为 SharePoint Online 的网站资产、网站页面和发布图像配置专用源

  • 使用 Add-SPOTenantCdnOrigin cmdlet 将站点资产文件夹定义为专用源。

    Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl */siteassets
    
  • 使用 Add-SPOTenantCdnOrigin cmdlet 将网站页面文件夹定义为专用源。

    Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl */sitepages
    
  • 使用 Add-SPOTenantCdnOrigin cmdlet 将发布图像文件夹定义为专用源。

    Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl */publishingimages
    

有关此命令及其语法的详细信息,请参阅 Add-SPOTenantCdnOrigin

运行 命令后,系统会跨数据中心同步配置。 此结果最多可能需要 15 分钟。

示例:为 SharePoint Online 的网站集配置专用源

使用 Add-SPOTenantCdnOrigin cmdlet 将网站集定义为专用源。 例如:

Add-SPOTenantCdnOrigin -CdnType Private -OriginUrl sites/site1/siteassets

有关此命令及其语法的详细信息,请参阅 Add-SPOTenantCdnOrigin

运行 命令后,系统会跨数据中心同步配置。 你可能会看到 “配置挂起” 消息。 当 SharePoint Online 租户连接到 CDN 服务时,预期会出现此消息。 此结果最多可能需要 15 分钟。

管理Office 365 CDN

设置 CDN 后,可以在更新内容或需求更改时对配置进行更改,如本部分所述。

在 Office 365 CDN 中添加、更新或删除资产

完成设置步骤后,可以添加新资产,并根据需要随时更新或删除现有资产。 只需对标识为源的文件夹或 SharePoint 库中的资产进行更改即可。 如果添加新资产,它将立即通过 CDN 获得。 但是,如果更新资产,则新副本最多需要 15 分钟才能传播并在 CDN 中可用。

如果需要检索源的位置,可以使用 Get-SPOTenantCdnOrigins cmdlet。 有关如何使用此 cmdlet 的信息,请参阅 Get-SPOTenantCdnOrigins

从 Office 365 CDN 中删除源

可以使用 Remove-SPOTenantCdnOrigin cmdlet 删除对标识为源的文件夹或 SharePoint 库的访问权限。

Remove-SPOTenantCdnOrigin -OriginUrl <path> -CdnType <Public | Private | Both>

有关如何使用此 cmdlet 的信息,请参阅 Remove-SPOTenantCdnOrigin

修改 Office 365 CDN 中的源

创建源后,无法对其进行修改。 请改为删除源,然后添加一个新源。 有关详细信息,请参阅从 Office 365 CDN 中删除源为资产添加源

禁用Office 365 CDN

使用 Set-SPOTenantCdnEnabled cmdlet 为组织禁用 CDN。 如果同时为 CDN 启用了公共源和专用源,则需要运行 cmdlet 两次,如以下示例所示。

若要禁止在 CDN 中使用公共源,请输入以下命令:

Set-SPOTenantCdnEnabled -CdnType Public -Enable $false

若要禁止在 CDN 中使用专用源,请输入以下命令:

Set-SPOTenantCdnEnabled -CdnType Private -Enable $false

有关此 cmdlet 的详细信息,请参阅 Set-SPOTenantCdnEnabled

使用 PnP PowerShell 设置和配置 Office 365 CDN

本部分中的过程要求使用 PnP PowerShell 连接到 SharePoint Online。 有关说明,请参阅 PnP PowerShell 入门

完成这些步骤以设置和配置 CDN 以使用 PnP PowerShell 在 SharePoint Online 中托管资产。

选择展开

使组织能够使用 Office 365 CDN

在对租户 CDN 设置进行更改之前,应检索Office 365租户中专用 CDN 配置的当前状态。 使用 PnP PowerShell 连接到租户:

Connect-PnPOnline -Url https://contoso-admin.sharepoint.com -UseWebLogin

现在,使用 Get-PnPTenantCdnEnabled cmdlet 从租户检索 CDN 状态设置:

Get-PnPTenantCdnEnabled -CdnType <Public | Private>

屏幕上会显示指定 CdnType 的 CDN 状态。

使用 Set-PnPTenantCdnEnabled cmdlet 使组织能够使用 Office 365 CDN。 可以让组织同时使用公共源和/或专用源。 还可以将 CDN 配置为在启用时跳过默认源的设置。 稍后可以随时添加这些源,如本文所述。

在 PnP PowerShell 中:

Set-PnPTenantCdnEnabled -CdnType <Public | Private | Both> -Enable $true

例如,若要使组织能够同时使用公共源和专用源,请键入以下命令:

Set-PnPTenantCdnEnabled -CdnType Both -Enable $true

若要使组织能够同时使用公共源和专用源,但跳过设置默认源,请键入以下命令:

Set-PnPTenantCdnEnabled -CdnType Both -Enable $true -NoDefaultOrigins

有关启用Office 365 CDN 时默认预配的源的信息,以及跳过默认源设置的潜在影响,请参阅默认 CDN 源。

若要使组织能够使用公共源,请键入以下命令:

Set-PnPTenantCdnEnabled -CdnType Public -Enable $true

若要使组织能够使用专用源,请键入以下命令:

Set-PnPTenantCdnEnabled -CdnType Private -Enable $true

有关此 cmdlet 的详细信息,请参阅 Set-PnPTenantCdnEnabled

更改要包含在 Office 365 CDN 中的文件类型列表 (可选)

提示

使用 Set-PnPTenantCdnPolicy cmdlet 定义文件类型时,将覆盖当前定义的列表。 如果要向列表添加其他文件类型,请先使用 cmdlet 了解已允许的文件类型,并将其与新文件类型一起包含在列表中。

使用 Set-PnPTenantCdnPolicy cmdlet 定义可由 CDN 中的公共和专用源托管的静态文件类型。 默认情况下,允许使用常见资产类型,例如.css、.gif、.jpg 和 .js。

在 PnP PowerShell 中:

Set-PnPTenantCdnPolicy -CdnType <Public | Private> -PolicyType IncludeFileExtensions -PolicyValue "<Comma-separated list of file types >"

例如,若要启用 CDN 以托管.css和 .png 文件,请输入 命令:

Set-PnPTenantCdnPolicy -CdnType Private -PolicyType IncludeFileExtensions -PolicyValue "CSS,PNG"

若要查看 CDN 当前允许的文件类型,请使用 Get-PnPTenantCdnPolicies cmdlet:

Get-PnPTenantCdnPolicies -CdnType <Public | Private>

有关这些 cmdlet 的详细信息,请参阅 Set-PnPTenantCdnPolicyGet-PnPTenantCdnPolicies

更改要从 Office 365 CDN 中排除的网站分类列表 (可选)

提示

使用 Set-PnPTenantCdnPolicy cmdlet 排除网站分类时,将覆盖当前定义的列表。 如果想要排除其他网站分类,请先使用 cmdlet 了解哪些分类已被排除,然后将其与新分类一起添加。

使用 Set-PnPTenantCdnPolicy cmdlet 排除不希望通过 CDN 提供的网站分类。 默认情况下,不排除任何网站分类。

在 PnP PowerShell 中:

Set-PnPTenantCdnPolicy -CdnType <Public | Private> -PolicyType ExcludeRestrictedSiteClassifications  -PolicyValue "<Comma-separated list of site classifications>"

若要查看当前限制的网站分类,请使用 Get-PnPTenantCdnPolicies cmdlet:

Get-PnPTenantCdnPolicies -CdnType <Public | Private>

返回的属性是 IncludeFileExtensionsExcludeRestrictedSiteClassificationsExcludeIfNoScriptDisabled

IncludeFileExtensions 属性包含从 CDN 提供的文件扩展名的列表。

注意

默认文件扩展名在公共和专用之间是不同的。

ExcludeRestrictedSiteClassifications 属性包含要从 CDN 中排除的网站分类。 例如,可以排除标记为 机密 的网站,以便不会从 CDN 提供应用了该分类的网站中的内容。

ExcludeIfNoScriptDisabled 属性根据站点级别的 NoScript 属性设置排除 CDN 中的内容。 默认情况下,NoScript 属性设置为“为新式网站启用”,将“经典网站禁用”。 这取决于租户设置。

有关这些 cmdlet 的详细信息,请参阅 Set-PnPTenantCdnPolicyGet-PnPTenantCdnPolicies

为资产添加源

使用 Add-PnPTenantCdnOrigin cmdlet 定义源。 可以定义多个源。 源是 SharePoint 库或文件夹的 URL,其中包含要由 CDN 托管的资产。

重要

切勿将包含用户信息或被视为对组织敏感的资源置于公共来源中。

Add-PnPTenantCdnOrigin -CdnType <Public | Private> -OriginUrl <path>

path 的值是包含资产的库或文件夹的相对路径。 除了相对路径之外,还可以使用通配符。 源支持在 URL 前面附加的通配符。 这允许你创建跨多个站点的源。 例如,若要将所有站点的 masterpages 文件夹中的所有资产作为 CDN 中的公共源包含在 CDN 中,请键入以下命令:

Add-PnPTenantCdnOrigin -CdnType Public -OriginUrl */masterpage
  • 通配符修饰符 */ 只能在路径的开头使用,并且与指定 URL 下的所有 URL 段匹配。
  • 路径可以指向文档库、文件夹或网站。 例如,路径 */site1 与网站下的所有文档库匹配。

可以添加具有特定相对路径的源。 不能使用完整路径添加源。

此示例在特定网站上添加网站资产库的专用源:

Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl sites/site1/siteassets

以下示例在网站集的网站资产库中添加 folder1 文件夹的专用源:

Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl sites/test/siteassets/folder1

如果路径中有空格,则可以用双引号将路径括起来,或者将空格替换为 URL 编码 %20。 以下示例在网站集的网站资产库中添加 文件夹 1 文件夹的专用源:

Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl sites/test/siteassets/folder%201
Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl "sites/test/siteassets/folder 1"

有关此命令及其语法的详细信息,请参阅 Add-PnPTenantCdnOrigin

注意

在专用源中,从源共享的资产必须先发布主版本,然后才能从 CDN 访问这些资产。

运行 命令后,系统会跨数据中心同步配置。 此结果最多可能需要 15 分钟。

示例:为母版页和 SharePoint Online 样式库配置公共源

通常,启用 Office 365 CDN 时,默认会为你设置这些源。 但是,如果要手动启用它们,请执行以下步骤。

  • 使用 Add-PnPTenantCdnOrigin cmdlet 将样式库定义为公共源。

    Add-PnPTenantCdnOrigin -CdnType Public -OriginUrl */style%20library
    
  • 使用 Add-PnPTenantCdnOrigin cmdlet 将母版页定义为公共源。

    Add-PnPTenantCdnOrigin -CdnType Public -OriginUrl */masterpage
    

有关此命令及其语法的详细信息,请参阅 Add-PnPTenantCdnOrigin

运行 命令后,系统会跨数据中心同步配置。 此结果最多可能需要 15 分钟。

示例:为 SharePoint Online 的网站资产、网站页面和发布图像配置专用源

  • 使用 Add-PnPTenantCdnOrigin cmdlet 将站点资产文件夹定义为专用源。

    Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl */siteassets
    
  • 使用 Add-PnPTenantCdnOrigin cmdlet 将网站页面文件夹定义为专用源。

    Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl */sitepages
    
  • 使用 Add-PnPTenantCdnOrigin cmdlet 将发布图像文件夹定义为专用源。

    Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl */publishingimages
    

有关此命令及其语法的详细信息,请参阅 Add-PnPTenantCdnOrigin

运行 命令后,系统会跨数据中心同步配置。 此结果最多可能需要 15 分钟。

示例:为 SharePoint Online 的网站集配置专用源

使用 Add-PnPTenantCdnOrigin cmdlet 将网站集定义为专用源。 例如:

Add-PnPTenantCdnOrigin -CdnType Private -OriginUrl sites/site1/siteassets

有关此命令及其语法的详细信息,请参阅 Add-PnPTenantCdnOrigin

运行 命令后,系统会跨数据中心同步配置。 你可能会看到 “配置挂起” 消息。 当 SharePoint Online 租户连接到 CDN 服务时,预期会出现此结果。 此结果最多可能需要 15 分钟。

管理Office 365 CDN

设置 CDN 后,可以在更新内容或需求更改时对配置进行更改,如本部分所述。

在 Office 365 CDN 中添加、更新或删除资产

完成设置步骤后,可以添加新资产,并根据需要随时更新或删除现有资产。 只需对标识为源的文件夹或 SharePoint 库中的资产进行更改即可。 如果添加新资产,它将立即通过 CDN 获得。 但是,如果更新资产,则新副本最多需要 15 分钟才能传播并在 CDN 中可用。

如果需要检索源位置,可以使用 Get-PnPTenantCdnOrigin cmdlet。 有关如何使用此 cmdlet 的信息,请参阅 Get-PnPTenantCdnOrigin

从 Office 365 CDN 中删除源

可以删除对标识为源的文件夹或 SharePoint 库的访问权限。 若要执行此操作,请使用 Remove-PnPTenantCdnOrigin cmdlet。

Remove-PnPTenantCdnOrigin -OriginUrl <path> -CdnType <Public | Private | Both>

有关如何使用此 cmdlet 的信息,请参阅 Remove-PnPTenantCdnOrigin

修改 Office 365 CDN 中的源

创建源后,无法对其进行修改。 请改为删除源,然后添加一个新源。 有关详细信息,请参阅从 Office 365 CDN 中删除源为资产添加源

禁用Office 365 CDN

使用 Set-PnPTenantCdnEnabled cmdlet 为组织禁用 CDN。 如果同时为 CDN 启用了公共源和专用源,则需要运行 cmdlet 两次,如以下示例所示。

若要禁止在 CDN 中使用公共源,请输入以下命令:

Set-PnPTenantCdnEnabled -CdnType Public -Enable $false

若要禁止在 CDN 中使用专用源,请输入以下命令:

Set-PnPTenantCdnEnabled -CdnType Private -Enable $false

有关此 cmdlet 的详细信息,请参阅 Set-PnPTenantCdnEnabled

使用适用于 Microsoft 365 的 CLI 设置和配置 Office 365 CDN

本部分中的过程需要 Microsoft 365 的 CLI。 使用 login 命令连接到Office 365租户。

完成这些步骤,使用适用于 Microsoft 365 的 CLI 设置和配置 CDN 以在 SharePoint Online 中托管资产。

选择展开

启用 Office 365 CDN

可以运行 spo cdn set 命令,在租户中管理 Office 365 CDN 的状态。

若要在租户中启用Office 365公共 CDN,请运行以下命令:

m365 spo cdn set --type Public --enabled true

若要启用 Office 365 SharePoint CDN,请运行以下命令:

m365 spo cdn set --type Private --enabled true

查看 Office 365 CDN 的当前状态

若要检查是否启用或禁用特定类型的 Office 365 CDN,请使用 spo cdn get 命令。

若要检查是否启用了Office 365公共 CDN,请运行以下命令:

m365 spo cdn get --type Public

查看Office 365 CDN 源

若要查看当前配置的Office 365公共 CDN 源,请运行以下命令:

m365 spo cdn origin list --type Public

有关启用 Office 365 CDN 时默认预配的源的信息,请参阅默认 CDN 源。

添加Office 365 CDN 源

重要

切勿将被视为对组织敏感的资源放置在配置为公共源的 SharePoint 文档库中。

运行 spo cdn origin add 命令可以定义 CDN 源。 可以定义多个源。 源是指向 SharePoint 库或文件夹的 URL,其中包含要托管 CDN 的资产。

m365 spo cdn origin add --type [Public | Private] --origin <path>

其中 path 是包含资产的文件夹的相对路径。 除了相对路径之外,还可以使用通配符。

若要将所有网站的 母版页库中 的所有资产作为公共源包含,请运行以下命令:

m365 spo cdn origin add --type Public --origin */masterpage

若要为特定网站集配置专用源,请运行以下命令:

m365 spo cdn origin add --type Private --origin sites/site1/siteassets

注意

添加 CDN 源后,最长可能需要 15 分钟,才能通过 CDN 服务检索文件。 可以运行 spo cdn origin list 命令,验证特定源是否已启用。

删除Office 365 CDN 源

运行 spo cdn origin remove 命令可以删除指定类型 CDN 的 CDN 源。

若要从 CDN 配置中删除公共源,请运行以下命令:

m365 spo cdn origin remove --type Public --origin */masterpage

注意

删除 CDN 源不会影响存储在与源匹配的任何文档库中的文件。 如果使用其 SharePoint URL 引用这些资产,SharePoint 会自动切换回指向文档库的原始 URL。 如果使用公共 CDN URL 引用资产,则删除源会中断链接,需要手动更改它们。

修改Office 365 CDN 源

无法修改现有 CDN 源。 而应运行 spo cdn origin remove 命令删除以前定义的 CDN 源,并运行 spo cdn origin add 命令添加新源。

更改要包含在 Office 365 CDN 中的文件类型

默认情况下,CDN 中包含以下文件类型:.css、、、.gif.ico.jpeg.js.png.eot.jpg.map.svg.ttf、、 .woff和 。.woff2 如果需要在 CDN 中添加其他类型的文件,可以运行 spo cdn policy set 命令更改 CDN 配置。

注意

如果更改文件类型列表,也就是覆盖当前定义的列表。 若要添加其他文件类型,请先运行 spo cdn policy list 命令,确定当前配置的文件类型。

若要将 JSON 文件类型添加到公共 CDN 中包含的文件类型的默认列表,请运行以下命令:

m365 spo cdn policy set --type Public --policy IncludeFileExtensions --value "CSS,EOT,GIF,ICO,JPEG,JPG,JS,MAP,PNG,SVG,TTF,WOFF,JSON"

更改要从 Office 365 CDN 中排除的网站分类列表

使用 spo cdn 策略集 命令排除不希望通过 CDN 提供的网站分类。 默认情况下,不排除任何网站分类。

注意

如果更改已排除的网站分类列表,也就是覆盖当前定义的列表。 若要排除其他分类,请先运行 spo cdn policy list 命令,确定当前配置的分类。

若要从公共 CDN 中排除分类为 HBI 的站点,请运行以下命令:

m365 spo cdn policy set --type Public --policy ExcludeRestrictedSiteClassifications --value "HBI"

禁用Office 365 CDN

若要禁用 Office 365 CDN,请运行 spo cdn set 命令。例如:

m365 spo cdn set --type Public --enabled false

使用 CDN 资产

启用 CDN 并配置了源和策略后,即可开始使用 CDN 资产。

本部分将帮助你了解如何在 SharePoint 页面和内容中使用 CDN URL,以便 SharePoint 将公共和专用源中的资产请求重定向到 CDN。

有关如何使用 CDN 托管客户端 Web 部件的信息,请参阅文章从 Office 365 CDN 托管客户端 Web 部件 (Hello World 第 4 部分)

注意

如果将 ClientSideAssets 文件夹添加到 专用 CDN 源列表,则 CDN 托管的自定义 Web 部件将无法呈现。 SPFX Web 部件使用的文件只能利用公共 CDN,而 ClientSideAssets 文件夹是公共 CDN 的默认源。

若要使用添加到源的资产,只需使用源中文件的路径更新原始文件的链接。

  • 编辑包含已添加到源的资产链接的页面或内容。 如果想要将链接更新到给定资产出现的位置,还可以使用几种方法之一在输入网站或网站集中全局搜索和替换链接。
  • 对于指向源中资产的每个链接,请将路径替换为 CDN 源中文件的路径。 可以使用相对路径。
  • 保存页面或内容。

例如,请考虑已复制到文档库文件夹 /site/CDN_origins/public/的图像 /site/SiteAssets/images/image.png。 若要使用 CDN 资产,请将图像文件位置的原始路径替换为源路径,以生成新的 URL /site/CDN_origins/public/image.png

如果要使用资产的完整 URL 而不是相对路径,请构造链接,如下所示:

https://<TenantHostName>.sharepoint.com/sites/site/CDN_origins/public/image.png

注意

通常,不应将 URL 直接硬编码到 CDN 中的资产。 但是,如果需要,可以手动为公共源中的资产构造 URL。 有关详细信息,请参阅 对公共资产的 CDN URL 进行硬编码

若要了解如何验证是否从 CDN 提供资产,请参阅排查Office 365 CDN 问题中的如何实现确认资产是否由 CDN提供

在公共源中使用资产

SharePoint Online 中的 发布功能 会自动将存储在公共源中的资产的 URL 重写为其 CDN 等效项,以便从 CDN 服务而不是 SharePoint 提供资产。

如果源位于启用了发布功能的网站中,并且要卸载到 CDN 的资产属于以下类别之一,则如果资源尚未被 CDN 策略排除,则 SharePoint 会自动重写源中资产的 URL。

以下示例概述 SharePoint 发布功能会自动重写链接:

  • 经典发布页 HTML 响应中的 IMG/LINK/CSS URL。
    • 这包括作者在页面的 HTML 内容中添加的图像。
  • 图片库幻灯片显示 Web 部件图像 URL。
  • SPList REST API 中的图像字段 (RenderListDataAsStream) 结果。
    • 使用新的属性 ImageFieldsToTryRewriteToCdnUrls 提供以逗号分隔的字段列表。
    • 支持超链接字段和 PublishingImage 字段。
  • SharePoint 图像呈现形式。

下图演示了 SharePoint 收到包含来自公共源资产的页面的请求时的工作流。

工作流图:从公共源检索Office 365 CDN 资产。

提示

如果要对页面上的特定 URL 禁用自动重写,可以检查页面并添加查询字符串参数?NoAutoReWrites=true 到要禁用的每个链接的末尾。

为公共资产构造 CDN URL

如果未为公共源启用 发布 功能,或者资产不是 CDN 服务自动重写功能支持的链接类型之一,则可以手动构造指向资产的 CDN 位置的 URL,并在内容中使用这些 URL。

注意

不能对专用源中的资产进行硬编码或构造 CDN URL,因为构成 URL 最后一部分的所需访问令牌是在请求资源时生成的。 可以构造公共 CDN 的 URL,该 URL 不应进行硬编码,因为它可能会发生更改。

对于公共 CDN 资产,URL 格式如以下示例所示:

https://publiccdn.sharepointonline.com/<TenantHostName>/sites/site/library/asset.png

TenantHostName 替换为租户名称。 例如:

https://publiccdn.sharepointonline.com/contoso.sharepoint.com/sites/site/library/asset.png

注意

使用页面上下文属性构造前缀,而不是硬编码 https://publiccdn.sharepointonline.com,因为 URL 可能会更改。 如果将显示模板与经典 SharePoint Online 配合使用,则可以将显示模板中的 属性 window._spPageContextInfo.publicCdnBaseUrl 用于 URL 的前缀。 如果将 SPFx Web 部件用于新式 SharePoint 和经典 SharePoint,则可以使用 属性 ,该属性 this.context.pageContext.legacyPageContext.publicCdnBaseUrl还提供 前缀。 如果前缀发生更改,则会使用它更新实现。

作为 SPFx 的示例,可以使用 属性 this.context.pageContext.legacyPageContext.publicCdnBaseUrlhost - - relativeURL for the item/ - / - 构造 URL。 有关详细信息,请参阅第 1 季表演系列视频《在客户端代码中使用 CDN》。

在专用源中使用资产

无需进行其他配置即可使用专用源中的资产。 SharePoint Online 会自动重写专用源中资产的 URL,因此始终从 CDN 处理这些资产的请求。 不能手动生成专用源中 CDN 资产的 URL,因为这些 URL 包含的令牌必须在请求资产时由 SharePoint Online 自动生成。

基于用户对源的权限动态生成的令牌保护对专用源中资产的访问,并注意以下各节中所述。 用户必须至少具有对源的 读取 访问权限,CDN 才能呈现内容。

下图演示了 SharePoint 收到包含来自专用源资产的页面的请求时的工作流。

工作流图:从专用源检索Office 365 CDN 资产。

专用源中基于令牌的授权

对 Office 365 CDN 中专用源中的资产的访问权限由 SharePoint Online 生成的令牌授予。 已有权访问源指定的文件夹或库的用户将自动获得令牌,这些令牌允许用户根据其权限级别访问文件。 这些访问令牌在生成后 30 到 90 分钟内有效,以帮助防止令牌重播攻击。

生成访问令牌后,SharePoint Online 会向客户端返回一个自定义 URI,其中包含两个授权参数 () 和 oat (源授权令牌) 。 每个令牌的结构都是<“以纪元时间格式表示的过期时间”>__<“安全签名”。> 例如:

https://privatecdn.sharepointonline.com/contoso.sharepoint.com/sites/site1/library1/folder1/image1.jpg?eat=1486154359_cc59042c5c55c90b26a2775323c7c8112718431228fe84d568a3795a63912840&oat=1486154359_7d73c2e3ba4b7b1f97242332900616db0d4ffb04312

注意

拥有令牌的任何人都可以访问 CDN 中的资源。 但是,包含这些访问令牌的 URL 仅通过 HTTPS 共享,因此,除非最终用户在令牌过期之前显式共享该 URL,否则未经授权的用户无法访问资产。

私有源中的资产不支持项级权限

请务必注意,SharePoint Online 不支持私有源中资产的项目级权限。 例如,对于位于 的文件 https://contoso.sharepoint.com/sites/site1/library1/folder1/image1.jpg,用户可以在满足以下条件的情况下有效访问该文件:

User 权限 有效访问
用户 1 有权访问 folder1 可以从 CDN 访问 image1.jpg
用户 2 无权访问 folder1 无法从 CDN 访问 image1.jpg
用户 3 无权访问 folder1,但被授予访问 SharePoint Online 中 image1.jpg 的显式权限 可以直接从 SharePoint Online 访问资产 image1.jpg,但不能从 CDN 访问资产
用户 4 有权访问 folder1,但已明确拒绝访问 SharePoint Online 中的 image1.jpg 无法从 SharePoint Online 访问资产,但可以从 CDN 访问资产,尽管被拒绝访问 SharePoint Online 中的文件

排查Office 365 CDN 问题

如何实现确认 CDN 正在为资产提供服务?

将指向 CDN 资产的链接添加到页面后,可以通过浏览到页面,在图像呈现并查看图像 URL 后右键单击该图像,确认资产正在从 CDN 提供。

还可以使用浏览器的开发人员工具查看页面上每个资产的 URL,或使用第三方网络跟踪工具。

注意

如果使用 Fiddler 等网络工具在从 SharePoint 页面呈现资产之外测试资产,则必须手动将引用器标头“Referer: https://yourdomain.sharepoint.com”添加到 GET 请求,其中 URL 是 SharePoint Online 租户的根 URL。

无法直接在 Web 浏览器中测试 CDN URL,因为必须具有来自 SharePoint Online 的引用网站。 但是,如果将 CDN 资产 URL 添加到 SharePoint 页面,然后在浏览器中打开该页面,则 CDN 资产将呈现在页面上。

有关在 Microsoft Edge 浏览器中使用开发人员工具的详细信息,请参阅 Microsoft Edge 开发人员工具

若要watch SharePoint 开发人员模式和实践 YouTube 频道中托管的简短视频,演示如何验证 CDN 是否正常工作,请参阅验证 CDN 使用情况并确保最佳网络连接

为什么新源的资产不可用?

新源中的资产不会立即可供使用,因为注册通过 CDN 传播以及资产从源上传到 CDN 存储需要时间。 资产在 CDN 中可用所需的时间取决于资产数量和文件大小。

我的客户端 Web 部件或SharePoint 框架解决方案不起作用

为公共源启用 Office 365 CDN 时,CDN 服务会自动创建以下默认源:

  • */MASTERPAGE
  • */STYLE 库
  • */CLIENTSIDEASSETS

如果缺少 */clientsideassets 源,SharePoint 框架解决方案将失败,并且不会生成警告或错误消息。 此源可能缺失,因为 CDN 已启用,并将 -NoDefaultOrigins 参数设置为 $true,或者源已被手动删除。

可以使用以下 PowerShell 命令检查查看存在哪些源:

Get-SPOTenantCdnOrigins -CdnType Public

或者,可以使用适用于 Microsoft 365 的 CLI 检查:

m365 spo cdn origin list

若要在 PowerShell 中添加源,请执行以下操作:

Add-SPOTenantCdnOrigin -CdnType Public -OriginUrl */CLIENTSIDEASSETS

若要使用适用于 Microsoft 365 的 CLI 添加源,

m365 spo cdn origin add --origin */CLIENTSIDEASSETS

使用 Office 365 CDN 需要哪些 PowerShell 模块和 CLI shell?

可以选择使用 SharePoint Online 命令行管理程序 PowerShell 模块或 CLI for Microsoft 365 使用 Office 365 CDN。

另请参阅

内容分发网络

Office 365 网络计划和性能优化

SharePoint 性能系列 - Office 365 CDN 视频系列