この記事はCDNを何も知らない人に朗報です(前編) の後編の記事になります。
キャッシュファイルの設定
CDNを利用することでオリジンサーバーへのアクセスをキャッシュサーバーが肩代わりして負荷を軽減するお話をしましたが、どうやってキャッシュサーバーからコンテンツを配信できるようになるのでしょうか。
本来オリジンサーバーへのアクセスであれば以下のようになると思います。
キャッシュサーバーがコンテンツを配信する場合は以下のような感じになると思います。
ここで関係してくるのは、DNSの設定になります(DNSについてはこちらを参照)。
DNSの設定
先ほどの図にDNSの設定を追記します。
いきなり出てきたCNAMEレコードですが、例を出して解説します。
また、説明に際して必要なAレコードについても加えて説明します。
例: www.originexample.jp(オリジンサーバー)とcache.example.com(キャッシュサーバー)というドメインがあるとする。
www.originexample.jp IN A 192.168.0.1
AレコードはドメインをIPアドレスに置き換えるレコードです。
したがって上記のAレコードの設定は「 www.originexample.jp のIPアドレスは192.168.0.1です」という意味になります。
→www.originexample.jpのコンテンツを取得する場合、IPアドレス「192.168.0.1」にアクセスしてコンテンツを取得します。
www.originexample.jp IN CNAME cache.example.com
CNAMEレコードはドメインを別のドメインに置き換えるレコードです。
したがって上記のCNAMEレコードの設定は「www.originexample.jpのドメインを、cache.example.comというキャッシュサーバーのドメインに転送します」という意味になります。
→ www.originexample.jp のコンテンツをcache.example.com(キャッシュサーバー)から取得できます。
ここまでの解説を踏まえてwww.originexample.jpのサイトのページを見たい場合、CDNを経由して表示する流れは以下の図のようになります。
(見たいページはoriginIndex.htmlとします)
(補足: 上図の②なのですが、キャッシュデータを保持している時間はキャッシュ時間の設定により異なります。
例えばキャッシュ時間1hなら、キャッシュして1hの間はファイルデータをオリジンに取得しに行かず、キャッシュデータを返します。
CDNを何も知らない人に朗報です(前編)で説明しましたが、キャッシュサーバーの保持しているデータが古くなり、そのデータをユーザーに返してしまうことがあります。)
CNAMEレコードの設定によりキャッシュサーバーからファイルデータを返すというのは分かりましたが、
ここで気になるのは**「どんなファイルでもキャッシュするのか」**ということです。
キャッシュファイルの選定
「キャッシュすればオリジンサーバーの負荷が軽減されるし高速表示されるなら全部キャッシュすればいいじゃん」、というわけではなく、どのファイルをキャッシュすべきか・どのファイルをキャッシュすべきでないか選定する必要があります。
キャッシュの対象となるファイルとキャッシュすべきでないファイルについて説明します。
キャッシュ対象となるファイル
キャッシュすべきファイルは個人情報を扱わないファイル、かつ帯域を使いすぎている動画などのメディアファイルといったファイルが選定の対象となります。
もし、個人情報を扱わないサイトならばすべてのファイルをキャッシュする設定でもよいかと思います(その分費用はかかりますが)。
キャッシュしてはいけないファイル
前述していますが、個人情報を扱うファイルになります。
例えば、会員情報などを保有しているサイトで自分の登録情報を閲覧した人がいたとします。そのHTMLがキャッシュされて他の方に配信されて閲覧されてしまうと個人情報が漏洩してしまいます(これを**「キャッシュ事故」**と呼びます)。
おまけ: CDNサービスを提供している会社
他にもあると思いますが、気になったら調べてみてください。