Rails 缓存

2024 年 12 月 18 日 | 阅读 4 分钟

缓存用于任何 Web 技术中。它通过存储先前的结果来加速性能,以供后续请求使用。默认情况下,Rails 中禁用缓存。

Rails 缓存可在三个粒度级别使用

  • 操作
  • Fragment

页面缓存

Rails 页面缓存是一种技术,其中整个操作输出存储为 HTML 文件。因此,Web 服务器可以在不通过 Rails 再次调用操作的情况下提供输出。因此,它通过动态生成内容将性能提高 100 倍。但是,此技术仅对无状态页面(不区分应用程序用户)有用。

可以使用 caches_page 方法调用为控制器类中的任何方法启用页面缓存。需要缓存的操作作为参数传递给 cache_page。无需包含您控制器中的所有操作。

示例

步骤 1 创建一个应用程序 MyCache -T

步骤 2 通过运行以下命令打开缓存。此命令在 tmp 目录中创建一个空的 caching-dev.txt 文件。

步骤 3 转到 config/environments/development.rb 文件并编写以下代码

步骤 4 转到 Gemfile,添加以下行。

步骤 5 运行 bundle install。

步骤 6 在 config/application.rb 文件中编写以下代码。它将指定您要保存缓存页面的位置。

步骤 7 我们将在这里引入一个控制器。运行以下命令

步骤 8 在 app/page_controller.rb 文件中,编写以下代码。

步骤 9 我们将在这里引入一个控制器。运行以下命令

步骤 10 转到 views/page/index.html.erb 文件。

步骤 11 页面缓存通过 caches_page 方法启用。转到控制器文件并编写以下代码

步骤 12 启动服务器。

步骤 13 在 localhost 上运行它。

Ruby on rails Caching 1

操作缓存

Rails 操作缓存保存操作响应的整个输出,例如页面缓存。只有一个区别,即使用操作缓存,操作调用仍被路由到控制器,以便仍然可以应用任何过滤器。可以使用 caches_ action 方法调用为控制器类中的任何方法启用操作缓存。

示例

我们将继续使用上面的例子。

步骤 14 转到 Gemfile,编写以下代码。

步骤 15 运行 bundle install。

步骤 16 要使用操作缓存,让我们创建一个新的受限页面。在控制器文件中编写以下代码。

步骤 17 创建 app/views/page/restricted.html.erb 文件。

步骤 18 转到 config/routes.rb 文件并编写以下代码。

步骤 19 启动服务器。

步骤 20 在 localhost 上运行它。

Ruby On rails Caching 2

片段缓存

Rails 片段缓存用于缓存模板内的块,而不是缓存操作方法的整个输出。当您需要经常更改操作的某些部分(无法缓存)而其他部分需要缓存(因为它们保持静态)时,它很有用。

它是在视图模板中完成的,而不是在控制器类中完成的。片段缓存由一个 cache_do 块指定。cache_do 语句中封闭的块内的行将被缓存。

示例

我们将继续使用上面的例子。

步骤 21 创建一个名为 frag 的新模型。

步骤 22 运行迁移命令。

步骤 23 转到 app/controllers/frags_controller.rb 文件。

步骤 24 转到 config/routes.rb 文件。添加以下行。

步骤 25 转到 app/views/frags/index.html.erb 文件。

步骤 26 转到 db/seeds.rb 文件以填充片段表。

步骤 27 运行 rake 命令。

步骤 28 如果我们要缓存页面上列出的每个片段,则可以使用 cache 方法完成。

转到 app/views/frags/index.html.erb 文件。

步骤 29 当一个对象传递给 cache 方法时,它会自动获取其 id 并生成一个适当的缓存键。如果片段已更新,缓存将自动过期。

在 app/views/frags/index.html.erb 文件中使用 render 方法和 cached 选项。


下载

下载此示例