2016-11-14 52 views
0

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

  1. 用AJAX缓存整个页面并添加用户状态块;
  2. 在没有此块的情况下使用整个页面的片段缓存;
  3. 您的版本...
+0

语法和简化的小变化。 – rlandster

回答

0

Rails允许您使用动态缓存密钥。

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

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

见。 Rails Guides about fragment caching

+0

是的,但我认为,不要使用片段缓存,而是使用整个页面缓存(使用nginx)代替。你怎么看? – jarosluv

+0

Afaik你不能那样做。如果部分页面只对特定用户可见,则无法缓存整个页面。而且由于只有Rails知道当前用户是什么,只有Rails能够决定在页面中包含哪些部分以及哪些部分不显示。 Nginx没有这个信息。 – spickermann

+0

我们可以在nginx返回缓存后通过AJAX请求获取这些信息。或不? – jarosluv