1

開発からステージングに移行したとき、JavaScriptとスタイルシートが単一のファイルにロールアップされたときの動作がどのように変化するかに悩まされました。

たとえば、次のように、保守性のために一連のスタイルシートをモジュール式で小さく保とうとしています。

  <%= stylesheet_link_tag "reset-fonts-grid.css", "typography.css", "layout.css", "cms.css", "cms.about.css", "cms.legal.css", "comments.css", "user_generated_content.css", "overlay.css", "login_page.css", "flag_for_admin.css", 'patch.css', 'nag_guide.css', :cache => "cache/all" %>

httpリクエストを数えるよりもデバッグに関心がある場合、開発では問題なく機能します。

しかし、本番環境に移動するか、以下のようにconfig / environment / development.rbでキャッシュをオンに設定するとすぐに、レイアウトが壊れます。

config.action_controller.perform_caching = false

ここで何が起こっているのでしょうか。また、連結ファイルがこのような一連の小さなリクエストとは異なる動作をするのはなぜですか。また、これを修正するにはどうすればよいですか。

余談ですが、ファイルサイズと比較して、httpリクエストの数は実際にページ上でどの程度の違いがありますか?

4

3 に答える 3

0

連結された状況と連結されていない状況でスタイルがどのように適用されているかを詳しく知りたい場合は、Firefox用のFireBugプラグインをインストールできます。次に、2つのブラウザウィンドウを開きます。1つは開発用ページ、もう1つは本番用ページで、FireBugを使用して問題を引き起こしている1つのDOM要素を分離し、2つの異なる状況でその要素の計算されたCSS属性を比較します。

最新バージョンのSafariには、FireBugと非常によく似たツールが組み込まれています。

RailsがCSSファイルを間違った順序で連結している可能性はありますか?ありそうもないようですが、おそらくRailsにバグがあります。連結ファイルを見て、順序を確認してください。それらが故障している場合は、1つのマスターCSSファイルを作成し、他のファイルを@includeステートメントに含めることができます。これにより、正しい順序で読み取られるようになります。

于 2009-07-07T18:36:50.937 に答える
0

興味深いことに、:cacheスラッシュが含まれないようにオプションを変更すると機能しますか? 例えば:

<%= stylesheet_link_tag "reset-fonts-grid.css", ..., :cache => "foo" %>
  • 結合されたスタイルシートに対して Rails が生成する HTMLlink要素はどのように見えるでしょうか?
于 2009-07-07T13:38:29.490 に答える
0

CSS は検証されますか? 過去に、検証で見つかった小さなエラーが原因で、あなたと同様の問題が発生しました。

http://jigsaw.w3.org/css-validator/ を試す

于 2009-07-07T13:27:29.753 に答える