CDNによる動的CMS・動的サイトの配信効率化とは?

2021.12.13

J-Stream CDNext

パフォーマンス改善

CDN

Webサイトの構築にCMS(Contents Management System)は欠かせません。またWebサイト自体の作りも多様化し、ユーザーごとに異なる内容を表示する動的サイトも一般的です。しかし動的CMSや動的サイトは、静的CMSやサイトに比べ「レスポンスに時間がかかる」「パフォーマンス低下のリスクが高い」といった傾向があります。そこで知っておきたいのがCDNの活用です。今回はCDN(Content Delivery Network)による、「動的CMSで生成されるWebサイト」と、「内容が動的に変化するWebサイト」の効率的な配信についてご紹介します。

1.「静的CMS」と比較した「動的CMS」とは

CMSは、HTMLやCSSなどの知識を持っていなくてもWebサイトの構築や更新・管理などを行うことが出来るシステムです。専門知識を持つ人にとっても手間の軽減に繋がるため、CMSの利用は非常に一般的なものです。
また、CMSは構築するWebサイトの用途に合わせて専門的な機能に特化しているものも多く、通販サイト(ECサイト)向け、メディアサイト向け、地方自治体サイト向けなど、様々な特色を持つCMSが提供されています。

CMSはWebサイトを構築する仕組みに注目して大別すると「静的CMS」と「動的CMS」の2種類に分けることが出来ます。
「静的CMS」はCMS上で作成されたWebサイトを、静的なファイル(HTML,CSS,画像ファイル等の実ファイル)として生成し、Webサーバー上に設置するCMSです。
Webサイトへリクエストが発生した場合、設置されたファイルをレスポンスするだけなので後述する動的CMSより、表示速度に関するパフォーマンスが良いケースが多いです。

動的CMSの特徴と配信パフォーマンス

「動的CMS」は静的CMSと違い実ファイルは生成されません。Webサイトへリクエストがあったタイミングでプログラムが動作し、Webサイトを生成してレスポンスします。事前に実ファイルを生成しない為、Webサイトの更新や公開・非公開等の設定は比較的容易です。
ただし、リクエストの度に逐一Webサイトを生成する処理が発生するため、静的CMSよりもレスポンスに時間がかかる場合が多いという特徴があります。また高アクセスが発生した場合に、生成処理によってWeb・DBサーバーのリソースを大きく消費してしまうため、パフォーマンス低下のリスクが静的CMSと比較して高いことも特徴として挙げられます。
このような特徴を持つ動的CMSですが、CDNを利用することでリスクの軽減が期待出来ます。

2.CDNで動的CMSの配信効率化に貢献

CDNはオリジンサーバー(実際にコンテンツを格納しているオリジナルのWebサーバー)からレスポンスされたコンテンツをそのままキャッシュして、オリジンサーバーに成り代わり、ユーザーへキャッシュしたコンテンツを配信するシステムです。

【関連記事】CDNって何?  サーバーの負荷軽減に貢献、意外と身近なCDNについて

前述の通り、動的CMSはユーザーからのリクエスト時に毎回Webサイトを生成するので、高アクセスになればパフォーマンスの低下が起こりがちです。アクセスの規模によっては低下ばかりでなく、サーバーダウンによる配信不能な状態に陥る危険性も高くなります。

そこでCDNを利用して、動的CMSが生成したWebサイトをキャッシュし、ユーザーからのリクエストに対してCDNが応答してWebサイトの配信を行うようにします。すると動的CMS側のWeb・DBサーバーはWebページの生成回数を抑えられるようになります。またユーザーはWebページの生成処理にかかる時間を待たずにCDNからキャッシュコンテンツを受け取ることが出来るようになります。
つまりWebサイト運営者側からすれば高アクセス時でも安定した配信を実現でき、ユーザーからすればパフォーマンスの高いアクセス体験を実感できるようになります。

動的CMS 配信の流れ(イメージ)

このように動的CMSとCDNは非常に相性が良く、CDNは動的CMSのデメリットを補うことが可能です。

動的CMSによる高頻度なWebサイト更新に対応するCDNextのAPI

動的CMSは静的CMSに比べてWebサイトの更新が容易なため、更新頻度の高いWebサイトの構築に用いられる場合が多くあります。CDNは一定時間キャッシュを保持し、その時間が切れるまでは同じファイルを配信し続けるので、CMS側でコンテンツを更新していても、CDNが保持している古いファイルが配信し続けられてしまう時間が発生する場合があります。
それを回避するため、当社が提供するCDNサービス「J-Stream CDNext」ではキャッシュをパージ(保持しているキャッシュファイルを解放)する機能と、プリフェッチ(予めオリジンサーバーへキャッシュファイルをリクエストして保持)する機能を備えています。またこれらの機能をAPIで提供しているため、CMSによるWebページの投稿や更新の動きに連動して、常に最新のキャッシュコンテンツの配信を実現します。

WordPress利用時に有効なCDNextの機能

当社CDNサービス「J-Stream CDNext」では、非常に多くの導入実績を持つ動的CMSであるWordPressを用いる際に有用な機能を備えています。

WordPressを用いて生成されたWebサイトをCDNから配信する場合にはいくつかの工夫を要します。例えばWordPressによってWebサイトを作成・更新する際にはWordPressの管理者向けページを開いて作業を行いますが、この管理者向け画面は記事の入力フォーム等が含まれるので、CDNにてキャッシュされるべきではありません。
CDNextには「WordPressログイン時非キャッシュ」という設定項目があり、チェック一つで管理者向けページの非キャッシュを実現します。

またWordPressを用いて生成されたWebサイトでは、コンテンツのキャッシュを禁じる「no-store」などのCache-Controlヘッダがしばしば意図せず付与されます。CDNextでは「Cache-Controlヘッダを無視してキャッシュ」する機能があり、キャッシュしても問題の無いエンドユーザー向けコンテンツに対しては当機能が有効です。

3.CDNは動的なWebサイトの配信にも有用

アクセスしたユーザー、端末、時間、場所などの条件を元に表示内容が変化するWebサイトのことを「動的サイト」と呼びます。ユーザーごとに内容がパーソナライズされている必要のあるWebサイトは動的サイトとして設計される場合が多いでしょう。
「動的CMS」で生成されるWebサイトは、その生成方法が動的なのであり、Webサイト自体の内容が動的とは限らないという点で「動的サイト」とは異なっていることに注意してください。

前述の通り、CDNはオリジンサーバーからレスポンスされたコンテンツをそのままキャッシュしてユーザーに配信するシステムです。一見、動的サイトをそのままキャッシュしてしまうと、誤ったユーザーに誤ったコンテンツを配信してしまう場合があるように思われますが、これはCDNの利用方法を工夫することで回避できます。もちろん配信の効率化への貢献も期待できます。

クエリストリングやCookieによるキャッシュ

動的なWebサイトの中では、例えばクエリストリングやCookieのパラメーターによって内容が変わるという場合があります。その場合、毎回わざわざオリジンサーバー側でパラメーターの判定を行い、それに応じたコンテンツを生成して配信してしまうと、この処理によってサーバー側に負荷がかかり、レスポンスも遅くなりがちです。

そこで、動的に生成した後のWebサイトをCDNでキャッシュすることで、CDN側で動的なWebサイトを疑似的に静的なWebサイトとして扱ってしまうことが出来るようになります。つまり以後は同じパラメーターを含むリクエストには同じコンテンツを、静的なWebサイトと同じようにCDNから配信することが出来るようになるということです。サーバー側での動的処理を毎回行う必要が無くなるため、Webサイト配信の高速化とサーバーの負荷軽減が期待できます。

動的ファイル配信の流れ(イメージ)

前述の通り、ユーザーごとに内容がパーソナライズされている必要のあるWebサイトは動的サイトとして設計されることが多いです。例えば通販サイト等はその代表的な例です。誰がアクセスしたかによって、個人情報のようなセンシティブな要素が動的に取り扱われるWebサイトの場合は、リクエストした人と別の人向けのコンテンツを配信してしまうと大きな事故に繋がる可能性があるため、そもそもその部分だけをキャッシュしないようにするというチューニングを行う必要があります。

具体的にはキャッシュを避けるべき要素を持つコンテンツのファイル名、拡張子、ディレクトリなどを予め指定しておき、それに該当するリクエストがあった場合には、CDNは必ずアクセスをオリジンサーバーまで通過させるという振る舞いをするよう設定します。これにより、キャッシュすべきでない動的なコンテンツの生成が、毎回必ずオリジンサーバー側で行われることになるので、誤ったコンテンツを誤った相手に配信してしまう危険を回避することが出来ます。

このようにキャッシュを避けなければいけないコンテンツがあったとしても、例えばユーザーを区別しない画像等のコンテンツをキャッシュするだけで、CDNは配信の安定化・高速化に貢献することが出来ます。

4.動的サイトに対してCDNextが貢献できる機能

「J-Stream CDNext」では、様々な作りのWebサイトでご利用いただけるよう、細かいチューニングが出来る設定項目をご用意しています。中でも動的サイトを配信する際に役立つ機能をピックアップしてご紹介します。

Cookieキャッシュ/クエリキャッシュ機能

CDNextがオリジンサーバーからキャッシュコンテンツを取得する際に、Cookieやクエリの値を利用するかどうかを設定できる機能です。利用する場合、例えば同じURLのページでもCookieの値が異なる場合は別のコンテンツとしてそれぞれキャッシュを保持することが可能になります。
反対にCookieやクエリの値によって区別をせず、これを無視してコンテンツをキャッシュしてしまうことも可能です。

仮想パス機能

ディレクトリ、拡張子、ファイル名単位でキャッシュルールを決めることが出来る機能です。これにより、例えば同じWebサイトの中でも、キャッシュを避けるべきコンテンツに対してのみ、固有のキャッシュルールを定めることが出来るようになります。

キャッシュTTL指定機能

CDNがキャッシュコンテンツを保持し続ける時間(TTL)を指定することが出来る機能で、キャッシュを避けるべきコンテンツに有効です。TTLが切れると、CDNはそのコンテンツが更新されているかどうかオリジンサーバーへ確認しに行きます。例えばTTLを0秒に指定することで「CDNはキャッシュを0秒間保持する」つまり、リクエストの度にオリジンサーバーへコンテンツの更新確認を行うようにすることが出来ます。TTLはオリジンサーバーからのHTTPレスポンスのステータスコードごとに指定可能です。

常時非キャッシュ機能

「キャッシュTTL指定機能」に加え、管理画面でチェックボックスにチェックを入れるだけで、コンテンツをキャッシュしないようにすることも可能です。

Varyキャッシュ正規化機能

同じURLでもUser-Agentの種類によって異なるコンテンツを配信する動的なWebサイト(同じURLでPC用とスマホ用サイトがある場合等)においてご利用いただける機能です。元々CDNextではVary:User-Agentと指定されたコンテンツはUser-Agentごとにキャッシュをしますが、数多く存在するUser-Agentをある程度正規化(≒単純化)することで、例えばPC用、タブレット用、スマホ用のような任意の限られた区切りでキャッシュを持ち、配信することが出来るようになります。これによりCDNのキャッシュ効率の向上が期待でき、より有効にCDNを利用できるようになります。

以上、動的CMS・動的サイトの2種類の動的要素を持つWebサイトにおけるCDN導入について紹介しました。CDNはこれらのWebサイトの安定した配信に大きく貢献します。また「J-Stream CDNext」は細かくキャッシュの仕組みをチューニングする機能を備えており、更に効率的な配信を実現します。
当社では充実した機能を備えたサービスと経験豊富なサポートチームの体制により、ニーズに対して最適なサービスご利用方法をご提案します。お気軽にお問合せ下さい。

J-Stream CDNext「料金と機能の詳細資料」をダウンロードする

関連する記事一覧

Jストリームの
ソリューションに
興味をお持ちの方は
お気軽に
お問い合わせください。

登録無料!

Jストリームのサービスを活用した成功事例や、お客さまの課題解決につながるお役立ち情報などをメールでお届けしています。

メールマガジン登録