2023.02.27
レスポンシブデザインを採用しているWebサイトなど、同じURLでもUser-AgentによってPC用やスマホ用などコンテンツの出し分けを行っている場合があります。そのような場合にCDNを利用する時には、今回紹介するJストリームのCDNサービス「J-Stream CDNext」の「Varyキャッシュ正規化機能」の利用が有効です。
Varyヘッダはサーバーが応答するHTTPヘッダの一種です。同じURLのコンテンツであっても、Varyヘッダに指定されている内容が異なる場合は、応答されるコンテンツが変わるということを意味します。つまり「Vary:User-Agent」という指定がある場合、クライアントのUser-Agentが異なると、同じURLであってもレスポンスされるコンテンツが変わるということになります。この指定を利用することで、PCからのリクエストにはPC用HTMLを、スマートフォンからのリクエストにはスマートフォン用のHTMLをレスポンスするような、コンテンツの出し分けが可能になります。
User-Agentにはクライアント側のOSの種類や、ブラウザ上にWebページを表示するためのエンジンのバージョン、ブラウザそのものの種類やバージョンなど複数の情報が含まれており、リクエストしてくるクライアントによって様々な組み合わせになります。
Jストリームが提供するCDNサービス「J-Stream CDNext」では、オリジンサーバーがVary:User-Agentを応答する場合、デフォルトの状態では同じURLのコンテンツであってもUser-agentごとにキャッシュファイルを保持します。つまりCDNを利用していても、Varyで指定されたルールに従ってコンテンツの配信が可能ということです。
User-Agentは前述の通り、複数の情報の組み合わせです。組み合わせの種類が一つでも異なると、User-Agentの値は変わります。例えば同じOSのPCからのアクセスであっても、ブラウザが異なればUser-Agentは変わります。CDNextのようにVaryヘッダに対応するCDNは、User-Agentの値が少しでも異なると、そのUser-Agent用に別のキャッシュファイルを保持してしまいます。つまり、サーバーが応答するコンテンツは同じなのに、User-Agentが異なるために複数のキャッシュコンテンツが出来てしまう場合があるということです。
コンテンツの出し分けが想定されるケースの多くは、PC用、スマートフォン用程度の粒度での出し分けであることが多いでしょう。細かいUser-Agentごとにキャッシュを分けて保持している必要は必ずしもありません。
上記のケースの問題は、User-Agentに含まれる値の組み合わせの種類は数千数万の単位で存在するということです。多くのアクセスを集めるWebサイトではUser-Agentの種類も増える傾向にあるため、キャッシュファイルもその分増えてしまいます。
それぞれのキャッシュファイルは、全く同じUser-Agentになるクライアントに対してしか配信されません。内容は同じコンテンツなのにキャッシュファイルがたくさん生成されてしまい、配信効率が低下してしまう恐れがあります。
またUser-Agentが異なるリクエストを受ける度にCDNはオリジンサーバーへの問い合わせを行うので、その回数も増え、CDNを利用しているにも関わらず、オリジンサーバーへ負荷をかけてしまう懸念もあります。
前述の懸念を解消するために、CDNextには「Varyキャッシュ正規化機能」が備わっています。これはVaryヘッダによって多数に分かれたキャッシュファイルを、利用しやすいように整える機能です。具体的には、User-Agentに含まれる特定の文字列が、指定の条件にマッチするかどうかという基準でUser-Agentをグループ化し、そのグループの数だけキャッシュファイルを生成するということができます。
グループは例えば「iPhone」や「Chrome」などの名称で登録します。このグループに当てはまる条件のリクエストがクライアントからCDNextに対してあった場合には、「iPhone」や「Chrome」などの形でオリジンサーバーへUser-Agentが通知されることになります。
設定はWeb管理画面上で行います。特定のルールによってグループ化したいUser-Agentのリストを作り、当該機能の利用にチェックを入れるだけで完了です。
この設定により、User-Agentの種類が膨大に増えてしまうことによる懸念を解消しながら、オリジンサーバー側で意図した通りのコンテンツの出し分けが可能になります。サーバー側で出し分けの設定がされている場合はこの機能の利用が大変有効です。
以上、User-Agentによる配信コンテンツの出し分けを行う時の注意点と、そのケースで有用なCDNextの機能について紹介しました。
Jストリームでは配信するコンテンツの特徴や仕様についても注意を行いながら、CDN導入の初期設定をエンジニアが直接サポート出来る体制を整えています。CDNの導入は初めてというお客様も多くいらっしゃいますので、まずは営業担当までお気軽にご相談下さい。
Jストリームの
ソリューションに
興味をお持ちの方は
お気軽に
お問い合わせください。