我的站点有一个顶部导航菜单栏,它的内容很少更改,因此它是片段缓存的理想选择。但如果用户登录,部分菜单栏将包含用户名,因此是个性化的,无法缓存。
我可以:
片段缓存静态部分并分别提供个性化部分。这似乎很容易。
缓存批次,可能在 memcached 或 CloudFront 中,将用户名保留在会话中,并使用 JavaScript 从会话中提取用户名并在客户端个性化页面。
最好的选择是什么?最好基于类似情况的个人经验。
我的站点有一个顶部导航菜单栏,它的内容很少更改,因此它是片段缓存的理想选择。但如果用户登录,部分菜单栏将包含用户名,因此是个性化的,无法缓存。
我可以:
片段缓存静态部分并分别提供个性化部分。这似乎很容易。
缓存批次,可能在 memcached 或 CloudFront 中,将用户名保留在会话中,并使用 JavaScript 从会话中提取用户名并在客户端个性化页面。
最好的选择是什么?最好基于类似情况的个人经验。
尝试这个:
##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