【问题标题】:How to cache page with single dynamic block in Rails如何在 Rails 中使用单个动态块缓存页面
【发布时间】:2017-03-27 21:31:04
【问题描述】:

我需要缓存我的 Rails 4 网站的主页。这都是静态的,但顶部有动态用户状态块。如果用户未登录,则他会看到登录链接,否则会看到名称和余额。出于这个原因,我们不能简单地缓存整个页面。我能走什么路?

  1. 使用AJAX缓存整个页面并添加用户状态块;
  2. 使用没有此块的整页片段缓存;
  3. 你的版本...

【问题讨论】:

  • 语法和简化方面的小改动。

标签: ruby-on-rails ruby caching


【解决方案1】:

Rails 允许您使用动态缓存键。

例如,您可以使用当前用户的id 作为缓存键的一部分:

cache "homepage_balance_user_#{current_user.id}" do
  # stuff that belongs to a specific user
end

看。 Rails Guides about fragment caching

【讨论】:

  • 是的,但我认为,最好不要使用片段缓存,而是使用整个页面缓存(使用 nginx)。你怎么看?
  • Afaik 你不能那样做。如果页面的某些部分只对特定用户可见,则不能缓存整个页面。由于只有 Rails 知道当前用户的情况,因此只有 Rails 能够决定页面中包含哪些部分以及不显示哪些部分。 Nginx 没有这个信息。
  • 我们可以在nginx返回缓存后通过AJAX-request获取这个信息。还是不行?
  • 当然,但这不再是 Rails 缓存问题了。更多的是关于如何通过 JavaScript 加载数据的问题。
猜你喜欢
  • 1970-01-01
  • 2019-07-06
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多