我是铁杆新手,我一直在试图弄清楚heroku上的stylesheets_link_tag是怎么回事。
如果我使用
= stylesheet_link_tag "style", :cache => true
heroku使用“all.css”并且不会选择样式表,但如果我使用
= stylesheet_link_tag "style", :cache => false
它使用名称“style.css”为样式表提供服务。为什么呢?
答案 0 :(得分:17)
这是调用的结果:cache =>在样式表链接标记上为true。
:cache => true获取所有提供的样式表,并将它们连接到一个名为all.css的文件中。
你在Heroku部署中只看到这个的原因是因为只有当Rails应用程序在生产模式下运行时它才会调用连接的all.css。
例如,假设我有三个样式表,并将它们包含在我的标题中:
= stylesheet_link_tag "application", "jquery-ui", "style", :cache => true
在开发中,这将包括application.css,jquery-ui.css和style.css(按此顺序)。
在制作中,它会将三个文件中的所有CSS(按照提供的顺序)连接到一个名为“all.css”的文件中,这个文件将是唯一包含的CSS文件。
这样做的好处是可以减少生产中的HTTP请求,理想情况下,包含CSS的文件大小更小,这有望加快页面加载速度。
编辑正如Casper在评论中指出的那样,Heroku有一个只读文件系统。 您可能希望查看Heroku Asset Packager以获取特定于Heroku的解决方案。
答案 1 :(得分:1)
经过测试,它对我不起作用(将config.serve_static_assets = true添加到production.rb)
答案 2 :(得分:0)
设置:cache => true会导致我的请求彻底失败。
我的短期解决方案是将以下内容添加到我的config / environments / prodcution.rb
config.serve_static_assets = true
我对Cloudflare背后的表现稍微不那么担心。找到一种方法来连接我的css和js文件是我的待办事项列表。