ApexドメインをALIASレコードで運用してはいけない
遅いぞ
ApexドメインはNakedドメインとも呼ばれ、サブドメインがついていないドメインを指す。自分のアプリ「Inkdrop」のウェブサイトを今まで inkdrop.app で運用してきたが、最近 www.inkdrop.app に移動した。Netlifyという、しばしば速いと評判のウェブホスティングサービスにデプロイしている。確かに、多くのNetlifyでホストされているウェブサイトがとても高速に読み込まれているのを目にした。しかしなぜか自分のサイトはそこまで速度が出ていなかった。特にTTFB (Time-to-first-byte)が異常に遅くて、常に200msより大きく、さらに120KBのダウンロードに800msもかかっていた。いったいなぜ?

ALIASレコードはgeo-targetingを無効化する
もしあなたが自分のドメインを持っているなら、Netlifyのドメインに対して CNAME
を設定しなければならない。しかしながら、ApexドメインはDNSの仕様上 CNAME
が割り当てられない。
NetlifyでApexドメインを使うには、その一つの方法として ALIAS
レコードを使えとドキュメントにある:
この ALIAS
レコードを使用するため、自分はNS1というDNSホスティングサービスを使っている。このNS1のドキュメントに ALIAS
レコードに関する記述を見つけた:
Disadvantages of an ALIAS record
Geo-targeting information is lost.
Since it is the authoritative server for example.com (issuing the queries for lb.example.net), then any intelligent routing functionality on the lb.example.net record will act upon the location of the authoritative server instead of your location. The EDNS0 edns-client-subnet option does not apply here. This means that you may be potentially mis-routed. For example, if you are in New York and the authoritative server for example.com is in California, then lb.example.net will think you are in California, and will return an answer that is distinctly sub-optimal for you in New York.
まじか。
要するに、 ALIAS
レコードはDNS問い合わせ時にNS1のサーバが仲介するので、Netlifyがサイトの訪問者がどの地域からアクセスしているのか分からなくなる、という事だ。厳密には常にNS1のサーバが置かれている地域からのアクセスということになる。なので転送経路を最適化できない。この件に関してNetlifyのフォーラムで質問してみた:


という訳で残念ながらそれは真実のようであった。仕方ないので自分のサイトを www
サブドメインに移すことにした。Apexドメインは(開発者から見て)美しいが、訪問者にとってはさして大きな問題ではなさそうだ。また、最近のブラウザは www
をアドレスバーに表示しないことに気づいた。例えばChromeだと:

iOSのSafariでも表示されない:

Chromiumの中の人によれば、 www
とか m
(モバイル用)はGoogleから “trivial (重要でない)” と認識されていて、その理由は多くの人がそこにあんまり注意する必要性が無いからだとしている:
the
www
andm
(for mobile) subdomains are being classified by Google as "trivial" subdomains because they feel most people do not need to be concerned with the information they represent.
自分もそうだなと思い当たるふしがあった。例えば今回の事があるまでNetlifyのウェブサイトが https://www.netlify.com/
だという事なんて気づかなかった。
TTFBが275msから73msに改善した
ご覧の通り、サイトのドメインをwww.inkdrop.app
に移動したらめちゃくちゃ速くなった:

ダウンロード速度も申し分ない。Cool.
それでもApexドメインが使いたい?
foolが上記フォーラムで答えているとおり、あなたには2つの選択肢がある:
- Netlify DNSを使う。これは “Linked A Record” が使えるので彼らのgeo-targetingが有効にできる
- Cloudflareの CNAME flatteningを使う。それだとNetlifyのgeo-に干渉しない
なぜ自分が上記選択肢を取らなかったかと言うと、自分はすでにNS1を使っており、 www
に移行するのが最も早かったからだ。
あなたのウェブサイトの速度改善の参考になれば嬉しい。
Twitter(日本語): https://twitter.com/craftzdog
Twitter(英語): https://twitter.com/inkdrop_app
Instagram: https://www.instagram.com/craftzdog/

