13

私はRailsの初心者です。herokuのstylesheets_link_tagで何が起こっているのかを理解しようとしています。

使用する場合

= stylesheet_link_tag "style", :cache => true

herokuは「all.css」を使用し、スタイルシートを取得しませんが、

= stylesheet_link_tag "style", :cache => false

「style.css」という名前を使用してスタイルシートを提供します。なんで?

4

3 に答える 3

17

これは、スタイルシートのリンクタグで:cache=>trueを呼び出した結果です。

:cache => trueは、提供されたすべてのスタイルシートを取得し、それらをall.cssという1つのファイルに連結します。

これがHerokuデプロイメントでのみ表示される理由は、Railsアプリケーションが実稼働モードで実行されている場合にのみ連結されたall.cssを呼び出すためです。

たとえば、3つのスタイルシートがあり、それらをヘッダーに含めたとします。

= stylesheet_link_tag "application", "jquery-ui", "style", :cache => true

開発中は、application.css、jquery-ui.css、style.cssの順で含まれます。

本番環境では、3つのファイルからのすべてのCSSを(提供された順序で)「all.css」と呼ばれる1つのファイルに連結します。これは、含まれる唯一のCSSファイルになります。

利点は、本番環境で作成するHTTPリクエストが少なくなり、理想的には、含まれているCSSのファイルサイズが小さくなることです。これにより、ページの読み込みが高速化されるはずです。

編集Casperがコメントで指摘しているように、Herokuには読み取り専用のファイルシステムがあります。Heroku固有のソリューションについては、HerokuAssetPackager参照することをお勧めします。

于 2009-11-22T07:49:49.157 に答える
1

これをテストしましたが、機能しませんでした(config.serve_static_assets = trueをproduction.rbに追加)

于 2011-09-12T22:01:04.980 に答える
0

:cache => trueを設定すると、リクエストが完全に失敗します。

短期間の私の解決策は、config / environment/prodcution.rbに以下を追加することです。

config.serve_static_assets = true

Cloudflareの背後にあるパフォーマンスについては少し心配していません。連結されたcssファイルとjsファイルを提供する方法を見つけることは私のやることリストにあります。

于 2011-08-01T00:02:57.030 に答える