どうしてHTMLでもかけるのにRailsタグを使う必要があるのかを聞いたのでメモメモ。
1. タグの種類
Railsのタグはたくさんあります。
- link_to
- image_tag
- javascript_include_tag
- form_tag
- stylesheet_link_tag
などなど。知っているだけ便利なものが多いようなので知識としてたくさん蓄えたいところです。
Railsドキュメント-View
Railsドキュメント-HTMLタグ逆引き
2. CDNとは?
CDNとは、Content Derivery Networkの略で、ファイルサイズの大きいデジタルコンテンツをネットワーク経由で配信するために最適化されたネットワークのこと。簡単にいうと、プログラムではない比較的大きいファイル(画像とか)の専門サーバーみたいな理解。
3. 仕組み
①でリクエストすると②でHTMLを受け渡す。
①の中に画像などのリクエストがあれば③からCDNにアクセスし、④で返す。
CDNはキャッシュみたな構造なので、古いファイルはだんだん消えていく。消えてしまっている(もしくは新しい)ものをリクエストがきた場合は、⑤と⑥からアクセスして取得する。
4. 負荷分散+効率化
上のような仕組みを使うことのメリットというのは、もうお分かりかもしれませんが、レスポンスのスピードが早くなります。HTMLを返すサーバーと画像などを返すサーバーを分けることができるためです。負荷が分散されることによって、Webサイトが重い・・・みたいなのを軽減するわけです。
そして、効率化と言うのは、CDNのサーバーがたまに落ちたりすることもあるわけです。そんな時は、Webサービス用のサーバーからHTML以外のファイルも返してあげないといけません。そこでRailsのHTMLタグを使っておくと、すぐにWebサービス用サーバーから取ってくるか、CDNサーバーから取ってくるかの切り替えができるわけです。
例えば、CDNサーバーが落ちたとすると、
<img src="http://CDN=SERVER-NAME/image/FILE=NAME">
↓
<img src="http://SERVICE-DOMAIN/image/FILE-NAME">
みたいな感じで、全てのURLを変更しないいけなくなります。
Railsを使っている場合だと
<%= image_tag("FILE-NAME")%>
と書いてあるだけなので、image_tagのアクセス先だけをプログラムで変えてやるだけで、すむわけです。効率化になってる!
5. まとめ
* Railsにはたくさんのタグやヘルパーがあって、知っているほど有利
* CDNという大きいファイルを受け渡すことに特化したサーバーがある
* 一般的なサーバーとCDNを組み合わせることによって、負荷分散と効率化ができる
ってな感じで理解しました。