资产在Rails中丢失(也使用片段缓存)。没有memcache

时间:2012-10-04 13:08:28

标签: ruby-on-rails caching memcached fragment-caching

在Heroku上使用Rails 3.1.1,使用两个web dynos运行。

我目前不使用内存缓存。我是using fragment caching successfully

我的日志中有很多缓存未命中(非常非常少)。应该注意的是,facebox-2(实际上是"缓存新鲜" 缓存片段。

正如你所看到的,这些未成年人并没有遵循"商店"据我所知,他们实际上并没有被缓存:

cache: [GET /assets/facebox2-e2da8b69b260f5c7f70e22a7b3e6bb26.css] fresh
cache: [GET /assets/application-282064ad715b6798765bdeb777974e9b.js] miss
cache: [GET /assets/seasons/fall_top_background2.png] miss
cache: [GET /assets/tell-a-friend-afd54b062dd0d649f6595b96bf7450a2.png] miss
cache: [GET /assets/banners/annons-884c9fbe7f6805249247ef02438fca08.jpg] miss
cache: [GET /assets/admarker-c709fa0ac510720b8ffb56e3a63a8bb3.jpg] miss
cache: [GET /assets/gifts/skolett-b97b0e5b262df6e15b95470f06917758.jpg] miss
cache: [GET /assets/closelabel.png] miss
cache: [GET /assets/loading.gif] miss

Production.rb

  config.serve_static_assets = true
  config.action_controller.perform_caching = true

我在本地成功运行生产模式rake assets:precompile,并成功将其上传到Heroku。

我认为我的问题与this question密切相关,尽管我在生产模式下运行它(不应该有任何区别,对吗?)。

我已经使用Memcached进行了一些实验,但我仍然是如何使用它的初学者。

我个人认为,我正在尝试从缓存中获取缓存图像,这会影响验证。例如,在我的碎片缓存中,我正在寻找

banners/annons-884c9fbe7f6805249247ef02438fca08.jpg

而它可能会被另一个"代码"缓存喜欢

banners/annons-121b1b12b12b1b1b11b1b.jpg

这是对的吗?

我的问题:

  1. 我是否遇到与this question相同的问题?我是否在缓存中缓存,可以这么说?

  2. 是Memcached和Rake :: Cache处理这个问题的方法吗?如果是这样,我更喜欢将我的碎片html页面存储为文件而不是存储在memcache中(它们是1.000 x 3 Mb)。我怎么能这样做?

  3. fragment_caching实际上是否在Heroku上创建这些文件是否正确,因为应用程序没有写入权限?

  4. 这可能会影响我的应用程序的性能(这很慢)?

  5. 简而言之,解决这个问题的简单方法是什么?

1 个答案:

答案 0 :(得分:0)

我开始使用Memcache,这解决了这个问题。为什么,我不太确定,但现在它按预期工作(Miss Store ---> Fresh)。