2011-06-04 102 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