2013-03-30 13 views
5

C'è un modo per sfruttare la nuova strategia di caching in Rails 4 (cache_digests) per XML?utilizza cache_digests con XML Builder?

Suppongo che potrei usare le viste xml.erb, ma preferisco le viste xml.builder per la loro durezza.

C'è un modo per utilizzare cache_digests in questo modo?

risposta

5

Per utilizzare fragment caching and Rails 4 cache_digests in file XML Builder, basta usare il metodo cache, che funziona esattamente come in altri modelli. Ecco un esempio di cache russa di un blog (semplificato) RSS feed:

# feed.xml.builder 

xml.instruct! :xml, version: "1.0" 
xml.rss version: "2.0", 'xmlns:atom': 'http://www.w3.org/2005/Atom' do 
    xml.channel do 
    xml.title "My Blog" 

    cache "articles/feed-#{@articles.count}-#{@articles.maximum(:updated_at).try(:to_i)}" do 
     @articles.each do |article| 
     cache article do 
      xml.item do 
      xml.title article.title 
      xml.description article.body 
      end 
     end 
     end 
    end 
    end 
end 
+0

Ottimo/molto utile. La mia unica modifica è stata spostare la prima riga 'cache' come la ** primissima ** riga del file' feed.xml.builder' - cioè. dovresti memorizzare il maggior numero possibile di risposte, quindi potresti anche includere tutte le informazioni di intestazione e xml.channel nella cache. –

Problemi correlati