fc2ブログ

2023.08 «  - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 » 2023.10
TOP > Rails 2.0・その8(javascriptファイルやcssファイルをひとまとめに)

 ← Rails 2.0・その9(ブラウザのロード時間を短くなったように体感させる) | TOP | Rails 2.0・その7(ベーシック認証が簡単にできる)

Rails 2.0・その8(javascriptファイルやcssファイルをひとまとめに)  

2008年02月06日 ()
流行りのAJAXやscriptaculousなどの外部のcssデザインファイルなどを使うとなると、jsファイルとcssファイルの数がやたら増えて、一つのページなのに100回もwebサーバーにアクセスしにいく、という事態が考えられます。

それを防止するのに、jsファイルやcssファイルをひとまとめにしてしまおう、というスゴイ機能ができました。

javascript_include_tag や stylesheet_link_tag の :cache を使えばよいのでした。

書き方の例

app/views/honyarara の honyarara.html.erb に、

<%= javascript_include_tag(:all, :cache => true) %>

と書きますと、

public/javascript ディレクトリに、all.js というファイルが出来ます。

このファイル、public/javascript ディレクトリの中にあったjsファイルを全て連結した1つのファイルとなっております。

<script src="/javascripts/all.js?1199936410" type="text/javascript"></script>

ページでは、この all.js だけを読み込む script タグができあがります。他の js ファイルは読み込まれません。



と、ここまでが基本編で、あとは応用編ということで・・・


perform_caching = true じゃないとこの機能が動かない
config/environments/(development|test|production).rb ファイルの
config.action_controller.perform_caching
が、true じゃあないと、この機能が動きませんのでご注意を。

デフォルトでは、production.rb だけが true になっていて、development.rb と test.rb は false になっているはずなので、

script/server -e production

で試せば、この機能を体験できます。


■all.js じゃなくて違う js ファイル名を指定できる。
:cache の値を変えれば、js ファイル名をカスタマイズすることができます。


<%= javascript_include_tag(:all, :cache => 'mycache') %>

は mycache.js というファイルができあがります。


<%= javascript_include_tag(:all, :cache => 'cache/mycache') %>

は public/javascipt/cache というディレクトリを作って、その中に mycache.js というファイルを作ります。

■べつに全部をまとめたい訳じゃないMy Mother(=わがまま)な人へ
まとめたい js ファイルだけを指定することもできます。


<%= javascript_include_tag('prototype', 'urchin', 'choochootrain', :cache => true) %>

■cache 用のファイルは自動的に消去されないし更新されない(と思う←自信なし)
上のやり方でめでたくキャッシュファイルが作成されたとして、で、prototype.js あたりが更新されたのでキャッシュファイルも更新したい、なんていう場合に、rails は自動的に更新してくれません(と思います)。

なので、手動でall.jsのようなキャッシュファイルを消して、Webサーバを再起動して、みたいなことをしなければならないです。これについてどなたかからアドバイスが欲しいなあ。

■stylesheet も同じようなやり方でファイルを1つにまとめられる

<%= stylesheet_link_tag(:all, :cache => true) %>

と書きますと、

<link href="/stylesheets/all.css" media="screen" rel="stylesheet" type="text/css" />

ができあがりますとさ。



【広告】

[2008.02.06(Wed) 20:42] [2.0]ViewTrackback(0) | Comments(0)
↑TOPへ

 ← Rails 2.0・その9(ブラウザのロード時間を短くなったように体感させる) | TOP | Rails 2.0・その7(ベーシック認証が簡単にできる)

COMMENT

COMMENT POST















管理者にだけ表示

 ← Rails 2.0・その9(ブラウザのロード時間を短くなったように体感させる) | TOP | Rails 2.0・その7(ベーシック認証が簡単にできる)