CDNを導入することにより、いくつかのデメリットが発生します。
適用できないドメイン
CDNは、従来、CNAMEに対する制限のために、以下の二つのパターンのサイトを配信(CDN化)できせんでした。最近では、CDN化できるようになっていますが、いくつかの制限があります。詳細は、Zone APEX CDNを参照してください。
- Zone APEX、別名:ネイキッドドメイン、Domain APEX等
- 例:https://example.jp/、別名:Naked domain、Zone Apex、Root record)
- メールアドレスに使用しているドメイン
- 例:mail.example.jp
DNSポイズニング
DNSポイズニングとは、ホスト名に対するIPアドレスを、強制的に変更するする攻撃です。この攻撃により、任意のホストに対するリクエストを偽サイトに誘導することができます。そして、この攻撃は、TTLの短いホスト名ほど攻略しやすいという特徴があります。
一方、CDNではGSLBを行うために、ホスト名のTTLを30秒程度に設定しています。つまり、CDNは、DNSポイズニングのリスクを高めることになります。
HTTPレンジリクエスト
HTTPレンジリクエストとは、HTTPによりファイルの一部分だけを取得するための方法です。巨大なメディアファイル(PDF、動画)に対して、スキップ動作(任意の部分のみの視聴)する際に使用されます。最近のWebサーバでは、このリクエストを正確に処理することができます。
一方、CDNで使用するHTTPキャッシュサーバでは、HTTPレンジリクエストに対する処理が不完全なものが多くあります。この結果、以下のような悪影響が発生することがあります:
- メディアビューアーがPanic終了
- メディアの後半部分に対するスキップ再生に待ちが発生
キャッシュの整合性
CDNではHTTPキャッシュサーバを使用しており、CDN上にはコンテンツの複製が配置されます。そのため、適切な設定を行わないと、古いコンテンツがユーザに送信される可能性があります。
一方、最近のCDNでは、CDN APIとしてコンテンツのパージ(キャッシュからの削除)がサポートされています。そして、これをオリジンサーバのCMSと組み合わせることにより、整合性問題は一応の解決を見ました。ただし、パージにもタイムラグがあります。さらに、ワイルドカードパージについては、オブジェクト数が増えると数十~数時間を必要とするものもあります。
SSL証明書の料金
基本的に、SSL証明書はそれを運用するサーバの台数分だけ購入する必要があります。CDNの場合、サーバ台数が莫大になるため、SSL発行事業者との調整(3台分程度の料金とする等)が必要になる場合があります。
ただし、現在では、複数サーバで使用しても同一料金とするSSL発行事業者も多くなっています。
アクセスログ(アクセス解析)
CDNでは、ユーザからのアクセスはすべてCDNサーバにより処理され、アクセスログはCDN側に残ります。そして、CDNによっては以下のような制限があります:
- アクセスログを提供していない
- フィールドが固定(Commonのみ)
- ログ提供に時間がかかる(数時間~数日)
この結果、ログベースのアクセス解析には、CDN化により、制限が発生する場合があります。
ユーザエージェントによる振り分け
多くのモバイル(ガラケー含む)対応サイトでは、PC用ページとレイアウトを変えるために、ブラウザのユーザエージェントによるページ振り分けが行われています。一方、CDNサーバ上でのユーザエージェントによるコンテンツ切り替えは、できない場合があります。また、切り替えが可能な場合も、細かな調整は一般的にできず、プリ設定された分類(ガラケー、PC、タブレット、スマートフォン)に従った切り替えになります。
アクセス制限
Webページに対するアクセス制限は、CDNの場合、以下のような限られた方法のみサポートしています(また、アクセス制限を提供していないCDNも存在します):
- BASIC認証
- トークン認証