0

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

我目前不使用内存缓存。我正在成功使用片段缓存

我的日志中有很多缓存未命中(而且很少有新鲜的)。应该注意的是,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

生产.rb

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

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

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

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

我个人的看法是,我试图从缓存中获取缓存的图像,这会破坏验证。例如,在我正在寻找的碎片缓存中

banners/annons-884c9fbe7f6805249247ef02438fca08.jpg

而它可能会与另一个“代码”一起缓存,例如

banners/annons-121b1b12b12b1b1b11b1b.jpg

这个对吗?

对于我的问题:

  1. 我和这个问题有同样的问题吗?可以这么说,是我在缓存中缓存吗?

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

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

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

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

4

1 回答 1

0

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

于 2012-10-30T05:43:11.780 回答