CDNの使用
コンテンツ配信ネットワーク(CDN)は、静的なファイルベースのコンテンツをキャッシュするための分散インフラストラクチャーです。 訪問者がサイトにアクセスすると、静的コンテンツが最も近いサーバーから読み込まれ、リクエストが高速化されます。
CDNはキャッシュプロキシとして機能します。 これは、静的コンテンツがローカルサーバーにコピーされると、すばやく簡単に取得できるようにキャッシュに保存されることを意味します。 これにより、ブラウザは地球の裏側ではなく、通り沿いにあるローカルサーバーから静的リソースをダウンロードできるため、待ち時間が短縮されます。 アルゴリズムが、リクエストに最も近いサーバーを見つけます。 下の図は、地理的な近さを利用して遅延を最小化する様子を示しています。
マップ上の赤い線は、リクエストによってサーバーからユーザーまでの移動が必要な距離を表しています。 リクエストの待機時間が短縮され、アプリケーションサーバーの負荷が軽減されるため、CDNはパフォーマンスを向上させるための優れたオプションです。
LiferayがCDN経由でのサービス提供をサポートしているリソースは以下の通りです。
- Liferayおよびカスタムプラグインに含まれるファイル
- ドキュメントとメディアに保存されているアイテム
- 動的に生成されたCSS *
- 動的に生成されたJavaScript *
- 動的に生成されたイメージ*
* CDN動的リソースを有効にする必要があります。
CDNは、外部から動的に読み込まれたリソースを提供するものではありません。
Liferay CDNの要件
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 Dynamic Resources] が選択されている場合(デフォルト)、Liferayは動的に生成されたCSS、JavaScript、および画像をCDN経由で提供します。 これを無効にすると、リソースの遅延読み込みに対応していないCDNを使用できます。
CDNホストを設定しました。 これでLiferayは、古いホストを新しいCDNホストに置き換えた静的リソースURLを生成し、そのURLをCDNによって自動的にキャッシュして、提供できるようになりました。
カスタムプラグインでのCDNの使用
CDNにカスタムリソースを追加する場合は、プラグインにパッケージ化します。 例えば、テーマプラグインにリソースを含めるか、またはポートレットプラグインのliferay-portlet.xml
ファイルでJavaScriptファイルを参照します。
CDN経由でリソースを使用するには、themeDisplay.getCDNDynamicResourcesHost()
を使用して、リソース参照の前にCDNのホスト名を付けます。
権限チェックや複雑なポリシーアクセスを必要とするものをCDNに配置しないでください
これで、CDNを使用してサイトの静的リソースをより高速に提供する方法がわかりました。