在 Rails 中渲染缓存页面

Posted

技术标签:

【中文标题】在 Rails 中渲染缓存页面【英文标题】:Render a cached page in Rails 【发布时间】:2015-10-10 19:46:33 【问题描述】:

我有一个简单的 Rails 模型,它只包含一个名为“缓存”的字段:

class CreateCache < ActiveRecord::Migration
  def change
    create_table :caches do |t|
      t.belongs_to :statistic
      t.string  :cache
      t.timestamps null: false
    end
  end
end

模型本身:

class Cache < ActiveRecord::Base
  belongs_to :statistic
end

“缓存”字段由 html 文档组成,当用户单击视图中的链接时,我需要找到一种方法在单独的窗口中呈现它(没有来自 Rails 的任何布局)。

有什么办法吗?

【问题讨论】:

好吧,要禁用布局,您可以在控制器操作中使用render layout: false。由于您想渲染内容,您可能需要查看render body: "raw_data"。请参阅guides.rubyonrails.org/layouts_and_rendering.html 了解更多信息 但是,如果您正在做的是缓存某些资源的渲染视图,那么还有更好的方法,因为在数据库中保存/检索 HTML 文档非常慢。也没有必要重新发明***guides.rubyonrails.org/caching_with_rails.html 【参考方案1】:

在您的 CacheController 中,您可以执行以下操作:

def show
  @cache_object = Cache.find(params[:id])

  render html: @cache_object.cache.html_safe, layout: false
end

更多信息:http://guides.rubyonrails.org/layouts_and_rendering.html

【讨论】:

@DayvanCowboy 欢迎 :) 你能接受它是有效的答案吗,对其他人也有用。 @DayvanCowboy 只需点击答案投票下方的勾号即可接受答案。

以上是关于在 Rails 中渲染缓存页面的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6.1 如何将文件渲染到页面模板中

Rails的不同缓存策略

Rails 可以期待每秒 100 个或更少的请求(对于非缓存页面)吗?

vue服务端渲染页面缓存和组件缓存的实例详解

在每个用户的Rails中使用片段缓存

提高 Rails 视图渲染的性能