8

即使我已经 rake assets:precompile-ed 我的所有资产,我似乎仍然很难让 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。我做错什么了吗?

4

3 回答 3

5

这篇博文有很好的答案和几个选项。这篇博文看起来并不严肃,但这是推荐阅读。

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

让 Varnish 缓存并将其作为静态内容提供服务非常棒,无需预编译 rake 任务。

2012 年 3 月 20 日更新

世界变化很快。heroku 的 Cedar 堆栈就是为此而构建的。heroku create myapp --stack cedar请记住在您的 application.rb 中添加这行代码以在部署时进行编译。

config.assets.initialize_on_precompile = false 

/更新

于 2011-06-11T20:36:27.487 回答
3

你也可以试试这个名为AssetHat 的简洁 Rails gem ;它利用缓存并且超级容易设置。

于 2011-06-14T14:01:31.027 回答
1

对于登陆这里的人,运行他自己的 nginx,你是这样做的:

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

来自@cgriego

但这对我们在 Heroku 上没有帮助 :-)

另一方面,在研究了一下之后,我将只使用 CDN。然后我将使用 config.action_controller.asset_host 配置我的应用程序。

再一次,Heroku 让最佳实践变得更容易!

于 2011-06-07T15:04:57.353 回答