2013-05-22 78 views
4

我爲我的JSON API輸出使用Jbuilder,現在我想使用Rails 3.2.13的'cache_digest'gem添加緩存。Rails緩存摘要和Jbuilder

它工作正常,緩存模板被創建並從緩存中讀取,但問題是,如果我更改模型條目,如更改「標題」,它不會過期緩存,它仍然顯示舊的標題。

這是我的JBuilder模板索引:通過RailsAdmin接口

json.cache! "news" do |json| 
    json.array!(@news) do |news| 
     json.id news.id 
     json.title news.title 
     json.excerpt news.excerpt 
     json.content strip_links news.content 
     json.image news.image 
     json.source news.source 
     json.published_at news.published_at 
     json.created_at news.created_at 
    end 
end 

我改變屬性。

回答

4

的解決方案是通過而不是「新聞」的字符串作爲緩存鍵@news集合,如:

json.cache! @news do |json| 
    json.array!(@news) do |news| 
     json.id news.id 
     json.title news.title 
     json.excerpt news.excerpt 
     json.content strip_links news.content 
     json.image news.image 
     json.source news.source 
     json.published_at news.published_at 
     json.created_at news.created_at 
    end 
end 

當我第一次嘗試這樣做,我得到一個錯誤說「文件名太長」的時候它試圖在磁盤上創建緩存文件。這是因爲我的@news集合太大(太多的對象),所以我改變了它以返回更少的對象。這對memcached之類的東西不會有問題,但是當保存到磁盤時,文件名的長度受操作系統的限制。