2011-06-04 176 views
8

即使我已經掠奪了資產:預編譯了我所有的資產,但我似乎仍然很難獲得heroku來正確緩存它們。我總是從我的日誌中得到諸如Rails 3.1資產在heroku上緩存

2011-06-04T16:40:20+00:00 app[web.1]: cache: [GET /assets/application-516c0fa9926527ab92d849148e557ee6.css] stale, invalid, store 
2011-06-04T16:40:22+00:00 app[web.1]: cache: [GET /assets/logo-3a84e73bd76ca1ab9629d0a92eac7d4f.png] stale, invalid, store 

。雖然當我檢查螢火蟲時,好像我正在收到HTTP 304。我做錯了什麼?

回答

1

對於有人在這裏登陸,經營自己的nginx的,這裏是你如何做到這一點:

location ~ "^\/assets\/[^.]+-[a-z0-9]{32}\." { expires max; } 

from @cgriego

但是,這並不能幫助我們在Heroku :-)

在另一方面,稍微查看一下後,我將使用CDN。然後,我將使用config.action_controller.asset_host配置我的應用程序。

再一次,Heroku讓您更輕鬆地使用最佳實踐!

5

這個blog post有很好的答案和幾個選項。博客文章看起來並不嚴肅,但這是推薦閱讀。

完整的URL: http://jimmycuadra.com/posts/the-challenge-of-asset-packaging-on-heroku

讓光油緩存,並將其用作靜態內容是輝煌的,沒有必要進行耙任務預編譯。

UPDATE 2012年3月20日

世界變化很快。 heroku的Cedar堆棧就是爲此而構建的。請記住在application.rb中添加這行代碼以在部署上進行編譯。

config.assets.initialize_on_precompile = false 

/UPDATE

+2

在Heroku的Cedar煙囪上不使用清漆。 http://devcenter.heroku.com/articles/http-caching – Jared 2011-11-19 17:50:46

+0

thx。更新的答案以反映杉木堆棧 – oma 2012-03-21 16:07:24

3

您也可以嘗試這個整潔的Rails的寶石叫AssetHat;它利用緩存並且非常易於安裝。

+0

它是如何在heroku上工作的?它在哪裏緩存文件? – oma 2011-06-15 12:05:42