2011-07-27 43 views
1

我正在使用來自Ryan Bates的漂亮佈局,其中包括具有以下代碼的佈局幫助程序。Rails:如何在使用此方法時緩存css和js文件

我application.html.erb

<%= stylesheet_link_tag "application", :cache => true %> 
<%= javascript_include_tag :defaults, :cache => true %> 
<%= yield(:head) %> 

然後在助手layout_helper.rb

def stylesheet(*args) 
    content_for(:head) { stylesheet_link_tag(*args) } 
end 
def javascript(*args) 
    content_for(:head) { javascript_include_tag(*args) } 
end 

使用這個在我的應用程序可以在任何頁面中添加CSS和JavaScript

只需調用

<% javascript "what_ever" %> 
<% stylesheet "what_ever" %> 

但我面臨的問題是,這些額外的CSS或JS文件沒有得到:cache => true,因此不會被緩存。

有沒有辦法解決這個問題?

基本上我希望每個頁面都有小的css文件,然後在調用它時提供一個大文件。

回答

0

做了一些關於這個網絡挖。

做小小文件有利有弊。所以陪審團仍然不在。

一個網站表示,小型小文件有助於可讀性更好地使用它們,但隨後使用一些編程語言將所有css文件和服務器合併爲一個。

這樣做的好處是你仍然可以開發你喜歡的方式,但用戶只需要下載文件一次,而不必爲每個新文件進行調用。

採用這種方法,最好的解決方案是分割每個文件並將其與模型名稱匹配。 application.css包含所有頁面通用的css,其中modelname.css文件包含特定於該模型的項目。

然後在application.html.erb中,您可以這樣進行調用。

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

這將結合所有的CSS文件並作爲一個服務。