SharePoint Online で CDN を利用する

こんにちは、SharePoint サポートの森 健吾 (kenmori) です。

今回は SharePoint Online で、パフォーマンス チューニングを行うにあたり、必須事項となりつつある CDN について、簡単にご紹介します。

 

CDN とは

CDN (Content Delivery Network) は、Web ページなどが参照する静的ファイルなどを利用者に提供するための最適化されたネットワークです。

SharePoint Online 管理シェルを使用して、CDN の有効化されると、CDN 配信元に指定されたコンテンツが、地理的に分散された複数の CDN エッジ サーバーにキャッシュされ、キャッシュ プロキシとして機能します (下図点線部分)。

ユーザー アクセス時には、ユーザーより地理的に近い場所にあるサーバーにアクセスし、代わりにキャッシュから静的ファイル コンテンツを取得する動作となります。

SharePoint Online ではマルチテナントの共有サービスによるデータ規模や大規模なスケールアウトといった性質上、オンプレミス製品で使用されていた Web フロント エンド サーバーキャッシュなどが、一部利用できない制約があります。

サービス内部に効率的なキャッシュ保持ができないため、CDN の利用がパフォーマンス チューニングの要となります。SharePoint では、サイト内に存在する静的コンテンツの多くがデータベース内に格納されています。そのため、CDN を利用することは Web サーバー負荷にとどまらず、データベースへのアクセス負荷を減らすことにもつながりますので非常に効果的です。

SharePoint の CDN は、そのスコープから下記 2 つに分類されます。

 

プライベート CDN
・ユーザーがプライベートの配信コンテンツにアクセスできるのは、CDN 配信元 (ライブラリ) においてその権限を持っている場合のみです。
・privatecdn.sharepointonline.com で始まるクエリ文字列付きのアドレス形式です。
・ページ ライブラリなど、発行機能による URL 自動書き換え機能によって生成されるもののみ有効です。

パブリック CDN
・ユーザー権限がチェックされないため、匿名でのアクセスが可能であり、高速となります。
・システム側のファイル (JavaScript) など、ユーザー データに分類されないファイルには最適です。
・publiccdn.sharepointonline.com で始まり、クエリ文字列が付与されないアドレス形式です。
・パブリック CDN のアドレスを直接ハードコードすることが可能です (推奨はしない)。

 

より詳細な情報につきましては、以下のサイトをご参考にしてください。

タイトル : Office 365 コンテンツ配信ネットワーク ( CDN) の使用
アドレス : /ja-jp/sharepoint/dev/general-development/office-365-cdn

 

CDN を使用しやすいシナリオ

1. モダン UI

モダン UI (新しいエクスペリエンス) には、本投稿にあるような CDN の有効化に関わらず、標準で最新の Web 技術を駆使したパフォーマンス チューニングが組み込まれており、弊社としてはモダン UI をお勧めしております。

また、SharePoint Framework (SPFx) などの、新しいエクスペリエンスを主なフレームワークとして導入されたカスタマイズ手法については、自動的に CDN などに対応しているため、パフォーマンス問題を自動的に最適化したソリューションをユーザーに展開することが可能です。

2. クラシック発行ポータル

モダン UI を採用できない場合、新規で SharePoint Online をご利用いただく場合、全社ポータルなどを作成するにあたっては、発行ポータルのテンプレートをもとに、サイト コレクションを作成することをお勧めします。

発行ポータルは、パフォーマンスに関して様々な考慮が組み込まれております。

  1. 管理ナビゲーションを使用するナビゲーション設定 (構造ナビゲーションにはパフォーマンス上の問題があります)
  2. ぺージ ライブラリ (CDN アドレスへの自動書き換え対応) をベースとしてページ作成が可能。

 

発行ポータルは情報を公開するために最適化された基盤となります。これに対し、最も頻繁に使用されるチームサイトは、チーム単位でコラボレーションするための基盤となりますので、上記のような機能が標準では備わっておりません。

 

3. 発行機能を有効化し、ページライブラリを使用

運用中のサイトが別のテンプレート (例. チームサイトなど) で作成されていて、サイトのページ ライブラリ (例. /SitePages) などにページが格納されている場合、CDN アドレスの自動書き換え機能をご利用いただくことができません。

この場合は、サイト コレクションの機能から “発行インフラストラクチャー” を有効化し、サイトの機能から “発行” 機能を有効化した上で、ページ ライブラリ (例. /Pages) をプロビジョニングしてください。

その上で、該当ライブラリにページを作成し、コンテンツ (Web パーツなど) を移し替えることをご検討ください。

 

なお、ページ ライブラリ上のページに Web パーツの移植が難しい場合については、後記に代替案として URL をハードコードする方法を説明しておりますが推奨はされません。

 

CDN の有効化手順

前提として CDN の有効化には SharePoint Online Management Shell をクライアント端末にインストールしておく必要があります。

 

タイトル : SharePoint Online Management Shell
アドレス : https://www.microsoft.com/ja-jp/download/details.aspx?id=35588

 

SharePoint Online 管理シェルを使用して CDN を有効化ください。

なお、CDN を有効化しても、展開元のアドレスを指定した場合は、元のデータを参照することが可能です。そのため、本 CDN 有効化手順によって既存システムに影響することはありません。

 

1) 作業端末にログインし、[スタート] から SharePoint Online Management Shell を管理者権限で実行します。
2) 以下のコマンドを実行します。

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

補足 : ご利用のテナントの SharePoint 管理センターアドレスを指定ください。

3) 資格情報を入力するダイアログが表示されるので、テナントの全体管理者権限、または SharePoint Online の管理者権限を所有するアカウントの情報を入力します。

4) 以下のように Set-SPOTenantCdnEnabled コマンドを実行して、Private および Public CDN を両方有効化します。

 Set-SPOTenantCdnEnabled -Enable $true

5) 以下のように Get-SPOTenantCdnOrigins コマンドを定期的に実行し、CDN 展開元のリストにおいて (configuration pending) というテキストが表示されなくなるまで待ちます。

 Get-SPOTenantCdnOrigins -CdnType Public
 Get-SPOTenantCdnOrigins -CdnType Private

 

補足 : 標準設定において、上記展開元のリストに userphoto.aspx (ユーザーの顔写真) という記載もありますが、現在の動作では userphoto.aspx はキャッシュされません。

 

6) CDN の展開元パスを増やす場合は、Add-SPOTenantCdnOrigin コマンドレットを使用し、フォルダパスを展開元として有効にするリソースのパスをフォルダー単位で指定します。

 Add-SPOTenantCdnOrigin -CdnType Public -OriginUrl "<CDN を有効にするリソースが存在する URL>"

補足 : 指定されたフォルダーの配下が配信元となります。

例.
*/SITEASSETS/SCRIPTS ・・・ 各サイトの SiteAssets/Scripts フォルダー配下
/SITES/TEAMSITE/SITEASSETS ・・・ /sites/teamsite の siteassets 配下

設定値は大文字で登録され、CDN 配信元を判断する際には URL の大文字小文字は区別されません。

 

7) 作業が完了すると、指定したリソースのパスに存在する対象ファイル (例. .js/ .png / .css) (参考: Get-SPOTenantCdnPolicies) などが、SharePoint Online が利用するプロキシサーバーに配置されるようになります。

補足 : より多くの種類のファイルを CDN にキャッシュさせたい場合は Set-SPOTenantCdnPolicies を使用して対象の拡張子を追加します。

 

ページ ライブラリにおける URL の書き換え機能

SharePoint Online のクラシック UI において CDN を利用する場合は、ページ ライブラリをご利用いただくことを推奨いたします。

URL の自動書き換え機能によって、以下のようなユーザー指定のパスも、レンダリング時に CDN アドレスに書き換わって描画されます。

下記例にあるようなプライベート CDNだけではなく、設定に応じてパブリック CDN アドレスにも自動的に書き換わります。

 

例. スクリプト エディタ Web パーツへの記載

HTML 描画時

なお、編集中のページでは、描画時に CDN アドレスに置き換わらない場合があります。ページをチェックインおよび発行した上で、動作を確認ください。

 

ページ ライブラリ以外の場合

CDN アドレスへの URL の書き換え機能は、発行機能に限定されます。そのため、サイトのページ ライブラリ (例. SitePages) 内のページには適用されません。

事前にページ ライブラリに移行することを検討することをお勧めしますが、要件上不可能な場合は CDN アドレスを直接ハードコードする方法もございます。

なお、SharePoint では、この方法を推奨しておりません。推奨しない理由としては、CDN が何らかの理由によって利用できない場合、リンク切れなどの現象を引き起こす可能性があることに起因します。

 

上記の前提の上、ハードコードによる CDN のご利用には、パブリック CDN を使用することが前提となります。

Add-SPOTenantCdnOrigin コマンドで、パブリック CDN にキャッシュしたいコンテンツの配信先を追加で指定する必要があります。

 

一通り、コンテンツのパブリック CDN への展開元を指定した上で、ページ上の参照先アドレスを以下のように書き換えます。

 

置き換え前アドレス
https://tenant.sharepoint.com/sites/portal/SiteAssets/Script/customscript.js

置き換え先アドレス
https://publiccdn.sharepoint.com/tenant.sharepoint.com/sites/portal/SiteAssets/Script/customscript.js

ページ ライブラリではなくても、このようにハードコードすることで CDN のメリットを享受することは可能です。

なお、CDN のアドレスは、ブラウザーのアドレスバーに直接指定して呼び出しても反応しません。HTTP 要求の Referrer ヘッダーをチェックします。

そのため、HTML タグを記述してページから参照させて呼び出し、動作を確認する必要があります。

 

参考情報

SharePoint Online を最高のパフォーマンスでご利用いただくため、下記ベスト プラクティスを是非ともご参考にしてくださいますようお願いいたします。

タイトル : Office 365 のネットワーク計画とパフォーマンスのチューニング
アドレス : https://support.office.com/ja-jp/article/e5f1228c-da3c-4654-bf16-d163daee8848

タイトル : SharePoint Online のパフォーマンスの調整
アドレス : https://support.office.com/ja-jp/article/f0522d4a-fbf4-41f9-854e-c9b59555091d

以下のサイトでは、CDN を利用するにあたって、ネットワーク構築上の注意事項をまとめています。

タイトル : Office 365 のための CDN とネットワークの要考慮事項について
アドレス : https://social.msdn.microsoft.com/Forums/ja-JP/04d5f483-7316-43e8-a055-5bd2af0158f2/office-365-cdn-?forum=sharepointsupportteamja

今回の投稿は以上です。