Rails片段缓存与个性化

时间:2014-12-16 06:43:29

标签: ruby-on-rails caching personalization

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

我可以:

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

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

  3. 最佳选择是什么?优选地基于类似情况的个人经验。

1 个答案:

答案 0 :(得分: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 Devise: How do I (mem)cache devise's database requests for the user object?