1

我的站点有一个顶部导航菜单栏,它的内容很少更改,因此它是片段缓存的理想选择。但如果用户登录,部分菜单栏将包含用户名,因此是个性化的,无法缓存。

我可以:

  1. 片段缓存静态部分并分别提供个性化部分。这似乎很容易。

  2. 缓存批次,可能在 memcached 或 CloudFront 中,将用户名保留在会话中,并使用 JavaScript 从会话中提取用户名并在客户端个性化页面。

最好的选择是什么?最好基于类似情况的个人经验。

4

1 回答 1

0

尝试这个:

  ##in user.rb to cache user

 after_save :invalidate_cache

  def self.serialize_from_session(key, salt)
    single_key = key.is_a?(Array) ? key.first : key
    Rails.cache.fetch("user:#{single_key}") do
      User.where(:id => single_key).entries.first
    end
  end


  def invalidate_cache
    Rails.cache.delete("user:#{id}")
  end

信用:Rails 设计:我如何(内存)缓存设计对用户对象的数据库请求?

于 2014-12-16T07:53:57.530 回答