2013-07-31 47 views
0

有了這個代碼,我可以緩存頁面的訪客如何將緩存頁面顯示給Rails中的訪客?

caches_page :show, :unless => :user_signed_in? 

但此刻我似乎無法找到一個方法來緩存的頁面呈現只客人。

我知道你可以使用javascript來顯示頁面的不同部分,但只保留給登錄用戶,但我的應用程序有點複雜&在頁面上有許多不同的元素,它們是爲登錄用戶保留的或客人,甚至不用提及在使用turbolinks或pjax的時候需要花費的時間。碎片緩存似乎是一個很好的方法,但我想先知道這是否可以在Rails 3.x.x中使用。現在看來似乎是很簡單,但我不知道..


如何顯示緩存頁面在Rails的唯一的客人?

在此先感謝。

+0

你甚至嘗試檢查它是否工作? –

+0

@MichaelSzyndel你是什麼意思?我只想向客人顯示緩存頁面,但它也向我的用戶顯示了我不想要的緩存頁面。 – goo

+0

@BenjaminSinclaire我正在查看它 – goo

回答

1

引述的Rails指南

一個頁面緩存的問題是,你不能用它適用於要求限制訪問莫名其妙 頁。這是行動 緩存的用武之地。動作緩存就像頁面緩存,除了 的事實傳入Web請求並從網絡服務器去 的Rails堆棧和行動寶盒使過濾器之前可以 運行它在緩存服務之前。這允許在仍然從緩存副本服務輸出 的結果的同時運行認證和其他限制。

所以,簡單的答案是,你應該使用這個代替

caches_action :show, :unless => :user_signed_in? 

使過濾器之前對authenticate_user!能夠先運行。