CDNの使用
コンテンツ配信ネットワーク(CDN)は、静的なファイルベースのコンテンツをキャッシュするための分散インフラストラクチャーです。 訪問者がサイトにアクセスすると、静的コンテンツが最も近いサーバーから読み込まれ、リクエストが高速化されます。
CDNはキャッシュプロキシとして機能します。 これは、静的コンテンツがローカルサーバーにコピーされると、すばやく簡単に取得できるようにキャッシュに保存されることを意味します。 これにより、ブラウザは地球の裏側ではなく、通り沿いにあるローカルサーバーから静的リソースをダウンロードできるため、待ち時間が短縮されます。 アルゴリズムが、リクエストに最も近いサーバーを見つけます。 下の図は、地理的な近さを利用して遅延を最小化する様子を示しています。

マップ上の赤い線は、リクエストによってサーバーからユーザーまでの移動が必要な距離を表しています。 リクエストの待機時間が短縮され、アプリケーションサーバーの負荷が軽減されるため、CDNはパフォーマンスを向上させるための優れたオプションです。
LiferayがCDN経由でのサービス提供をサポートしているリソースは以下の通りです。
- Liferayおよびカスタムプラグインに含まれるファイル
- 動的に生成されたCSS *
- 動的に生成されたJavaScript *
* CDN 動的リソースを有効にする必要があります。
CDNは、外部から動的に読み込まれたリソースを提供するものではありません。
Liferay CDNの要件
CDNは、次の要件を満たす必要があります。
-
リソースを動的に保存および取得する: CDNプロバイダーに問い合わせて、CDNが機能するために手動でアップロードが必要なものがないことを確認してください。 CDN はリソースを自動的に取得する必要があります。
-
透過プロキシのように機能する: リクエストは最初にCDNに送信されます。 リソースが利用できない場合、CDN はそれをオリジン (Liferay) から取得し、キャッシュしてから提供します。
認定されたCDNを設定した後、それを使用するようにLiferayを設定します。
CDNを使用するようにLiferayを設定する
CDNを設定するための方法には、次の2つがあります。
-
コンテンツ配信ネットワークのプロパティ を ポータル プロパティ ファイルに設定します。
-
コントロールパネルを使用する
コントロールパネルでCDNを設定する方法は次のとおりです。
-
Liferay で、 グローバル メニュー (
) をクリックし、 コントロール パネル タブを選択します。 -
[設定]カテゴリで、[Instance Settings]を選択します。 [Instance Settings]ページが表示されます。
-
[仮想インスタンススコープ]ナビゲーションで、[一般]をクリックします。 [General Main Configuration]ページが表示され、次の3つのCDN関連フィールドが含まれています。
- CDN ホスト HTTP
- CDN ホスト HTTPS
- CDN動的リソースを有効にする

CDNホストのURLを指定するときは、必ずプロトコルとドメインを含めてください。
CDNホストHTTP: http://cdnhost1.liferay.com CDNホストHTTPS: https://cdnhost2.liferay.com
CDN 動的リソース が選択されている場合 (デフォルト)、Liferay は動的に生成された CSS と JavaScript を CDN 経由で提供します。 遅延読み込みをサポートしない CDN を使用するには、これを無効にします。
CDNホストを設定しました。 これで、Liferay は以前のホストを新しい CDN ホストに置き換える静的リソース URL を生成します。 これにより、リソースがキャッシュされ、CDN によって提供されるようになります。
SDN 経由で SVG アイコンを読み込む場合、 <use> タグがクロスオリジン リクエストをサポートしていないため、CORS 警告が表示される場合があります。 svg4everybody ポリフィルは SVG をインライン化するため、アイコンは正しくレンダリングされます。 この警告は無視することも、同じオリジンからアセットを提供することで回避することもできます。
カスタムプラグインでのCDNの使用
CDNにカスタムリソースを追加する場合は、プラグインにパッケージ化します。 例えば、テーマプラグインにリソースを含めるか、またはポートレットプラグインのliferay-portlet.xmlファイルでJavaScriptファイルを参照します。
CDN経由でリソースを使用するには、themeDisplay.getCDNDynamicResourcesHost()を使用して、リソース参照の前にCDNのホスト名を付けます。
権限チェックや複雑なポリシーアクセスを必要とするものをCDNに配置しないでください
これで、CDNを使用してサイトの静的リソースをより高速に提供する方法がわかりました。