【发布时间】:2013-03-30 22:10:29
【问题描述】:
有什么方法可以利用 Rails 4 (cache_digests) 中用于 XML 的新缓存策略?
我想我可以使用 xml.erb 视图,但我更喜欢 xml.builder 视图,因为它们简洁。
有没有办法以这种方式使用cache_digests?
【问题讨论】:
标签: ruby-on-rails xml caching ruby-on-rails-4
有什么方法可以利用 Rails 4 (cache_digests) 中用于 XML 的新缓存策略?
我想我可以使用 xml.erb 视图,但我更喜欢 xml.builder 视图,因为它们简洁。
有没有办法以这种方式使用cache_digests?
【问题讨论】:
标签: ruby-on-rails xml caching ruby-on-rails-4
要在 XML Builder 文件中使用 fragment caching and Rails 4 cache_digests,只需使用 cache 方法,它的工作方式与其他模板中的完全一样。以下是(简化的)博客 RSS 提要的俄罗斯娃娃缓存示例:
# 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
【讨论】:
cache 移动到feed.xml.builder 文件的very first 行——即。你应该缓存尽可能多的响应,所以你也可以在缓存中包含所有的 header 和 xml.channel 信息。