为什么滚动javascript或css在rails螺丝布局?

时间:2009-07-07 12:14:10

标签: ruby-on-rails caching yslow

有几次,当我从开发阶段转向升级阶段时,我被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 / environments / development.rb中设置缓存,如下所示,布局就会中断:

config.action_controller.perform_caching = false

这里发生了什么,为什么连接文件的行为与这样的一系列较小请求的行为不同,我该如何解决这个问题呢?

另外,与文件大小相比,http请求在页面上实际产生的差异有多大?

3 个答案:

答案 0 :(得分:0)

你的CSS验证了吗?我过去遇到过类似于你的问题,这些问题是由我在验证时发现的小错误引起的。

尝试http://jigsaw.w3.org/css-validator/

答案 1 :(得分:0)

出于兴趣,如果您更改:cache选项以使其不包含正斜杠,它是否有效?例如:

<%= stylesheet_link_tag "reset-fonts-grid.css", ..., :cache => "foo" %>
  • Rails为您的组合样式表生成的HTML link元素是什么样的?

答案 2 :(得分:0)

如果您想深入了解在连接和非连接情况下如何应用样式的详细信息,可以安装Firefox的FireBug插件。然后可能打开两个浏览器窗口,一个是dev中的页面,一个是生产中的,并使用FireBug来隔离一个给你带来麻烦的DOM元素,并在两种不同情况下比较该元素的计算CSS属性。

最新版本的Safari有一个与FireBug非常相似的内置工具。

Rails是否可能以错误的顺序连接CSS文件?似乎不太可能,但也许Rails中存在一个错误。查看连接文件并检查订单。如果它们出现故障,您可以创建一个主CSS文件,并使用@include语句包含其他文件。这将确保以正确的顺序阅读它们。