User-Agentで出し分けるサイトでのCDN利用に「Varyキャッシュ正規化機能」:CDNext機能紹介

2023.02.27

J-Stream CDNext

CDN

CDNext紹介

レスポンシブデザインを採用しているWebサイトなど、同じURLでもUser-AgentによってPC用やスマホ用などコンテンツの出し分けを行っている場合があります。そのような場合にCDNを利用する時には、今回紹介するJストリームのCDNサービス「J-Stream CDNext」の「Varyキャッシュ正規化機能」の利用が有効です。

1. Vary:User-Agentとは

Varyヘッダはサーバーが応答するHTTPヘッダの一種です。同じURLのコンテンツであっても、Varyヘッダに指定されている内容が異なる場合は、応答されるコンテンツが変わるということを意味します。つまり「Vary:User-Agent」という指定がある場合、クライアントのUser-Agentが異なると、同じURLであってもレスポンスされるコンテンツが変わるということになります。この指定を利用することで、PCからのリクエストにはPC用HTMLを、スマートフォンからのリクエストにはスマートフォン用のHTMLをレスポンスするような、コンテンツの出し分けが可能になります。

User-Agentにはクライアント側のOSの種類や、ブラウザ上にWebページを表示するためのエンジンのバージョン、ブラウザそのものの種類やバージョンなど複数の情報が含まれており、リクエストしてくるクライアントによって様々な組み合わせになります。

User-Agentの例
User-Agentの例。
リクエストしてきたクライアントの情報を表している。

2. Vary:User-Agentの指定があるWebサイトでCDNを利用する

Jストリームが提供するCDNサービス「J-Stream CDNext」では、オリジンサーバーがVary:User-Agentを応答する場合、デフォルトの状態では同じURLのコンテンツであってもUser-agentごとにキャッシュファイルを保持します。つまりCDNを利用していても、Varyで指定されたルールに従ってコンテンツの配信が可能ということです。

User-Agentは異なるが応答するコンテンツは同じ時

User-Agentは前述の通り、複数の情報の組み合わせです。組み合わせの種類が一つでも異なると、User-Agentの値は変わります。例えば同じOSのPCからのアクセスであっても、ブラウザが異なればUser-Agentは変わります。CDNextのようにVaryヘッダに対応するCDNは、User-Agentの値が少しでも異なると、そのUser-Agent用に別のキャッシュファイルを保持してしまいます。つまり、サーバーが応答するコンテンツは同じなのに、User-Agentが異なるために複数のキャッシュコンテンツが出来てしまう場合があるということです。

User-Agent:AとBで別のキャッシュファイルを持つイメージ
User-Agent:AとBで別のキャッシュファイルを持つイメージ。
ファイルの内容が全く同じでも、キャッシュファイルとしては別々に保持される。

コンテンツの出し分けが想定されるケースの多くは、PC用、スマートフォン用程度の粒度での出し分けであることが多いでしょう。細かいUser-Agentごとにキャッシュを分けて保持している必要は必ずしもありません。

User-Agentはとても種類が多い

上記のケースの問題は、User-Agentに含まれる値の組み合わせの種類は数千数万の単位で存在するということです。多くのアクセスを集めるWebサイトではUser-Agentの種類も増える傾向にあるため、キャッシュファイルもその分増えてしまいます。
それぞれのキャッシュファイルは、全く同じUser-Agentになるクライアントに対してしか配信されません。内容は同じコンテンツなのにキャッシュファイルがたくさん生成されてしまい、配信効率が低下してしまう恐れがあります。
またUser-Agentが異なるリクエストを受ける度にCDNはオリジンサーバーへの問い合わせを行うので、その回数も増え、CDNを利用しているにも関わらず、オリジンサーバーへ負荷をかけてしまう懸念もあります。

3. Varyキャッシュを正規化する

前述の懸念を解消するために、CDNextには「Varyキャッシュ正規化機能」が備わっています。これはVaryヘッダによって多数に分かれたキャッシュファイルを、利用しやすいように整える機能です。具体的には、User-Agentに含まれる特定の文字列が、指定の条件にマッチするかどうかという基準でUser-Agentをグループ化し、そのグループの数だけキャッシュファイルを生成するということができます。

Varyキャッシュを正規化のイメージ
正規化のイメージ。
これによって無駄なキャッシュファイルが生成されることを防ぎ、
CDNの配信効率の向上が期待できる。

グループは例えば「iPhone」や「Chrome」などの名称で登録します。このグループに当てはまる条件のリクエストがクライアントからCDNextに対してあった場合には、「iPhone」や「Chrome」などの形でオリジンサーバーへUser-Agentが通知されることになります。

設定はWeb管理画面上で行います。特定のルールによってグループ化したいUser-Agentのリストを作り、当該機能の利用にチェックを入れるだけで完了です。

CDNext管理画面/User-Agentリスト編集
CDNext管理画面/キャッシュ挙動
作成したリストを選択して機能の利用にチェックを入れる。
オリジンサーバーがVaryヘッダを応答しない場合でも、ここでの設定内容を利用した配信が可能。

この設定により、User-Agentの種類が膨大に増えてしまうことによる懸念を解消しながら、オリジンサーバー側で意図した通りのコンテンツの出し分けが可能になります。サーバー側で出し分けの設定がされている場合はこの機能の利用が大変有効です。

以上、User-Agentによる配信コンテンツの出し分けを行う時の注意点と、そのケースで有用なCDNextの機能について紹介しました。
Jストリームでは配信するコンテンツの特徴や仕様についても注意を行いながら、CDN導入の初期設定をエンジニアが直接サポート出来る体制を整えています。CDNの導入は初めてというお客様も多くいらっしゃいますので、まずは営業担当までお気軽にご相談下さい。

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

サービス詳細

関連する記事一覧

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

電話でのお問い合わせ

0120-658140

【受付時間】9:30~18:30(土日祝日を除く)

登録無料!

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

メールマガジン登録

電話でのお問い合わせ

0120-658140

【受付時間】9:30~18:30(土日祝日を除く)