rails: actionpack-page_caching(页面缓存-rails4已经废弃)

一个已经从 rails core 移除的功能,但有些场景适合使用

01 要开启 rails 的配置(默认是开启的)

配置: 全局配置,配置文件 config/application.rb

  • production: 默认是开启的
  • development: bin/rails dev:cache 才会开启
config.action_controller.perform_caching = true

02 添加 Gem

在你的 Rails 应用的 Gemfile 中添加:

gem 'actionpack-page_caching'

然后运行 bundle install 安装它。

03 生成控制器

使用 Rails 命令生成一个控制器,比如 PagesController

rails generate controller Pages show

这将生成一个控制器文件 app/controllers/pages_controller.rb 和相应的视图文件 app/views/pages/show.html.erb

04 配置页面缓存

在生成的控制器中,你可以设置页面缓存。例如,在 PagesController 中:

class PagesController < ApplicationController
  caches_page :show

  def show
    # 你的业务逻辑,比如查找模型
  end
end

05 创建视图

app/views/pages/show.html.erb 中添加你想要展示的内容。

06 配置路由

config/routes.rb 中添加相应的路由:

Rails.application.routes.draw do
  get 'pages/show', to: 'pages#show'
end

07 运行应用

启动你的 Rails 服务器并访问 /pages/show。第一次请求将会生成页面并将其缓存。后续请求将直接从缓存中提供该页面。

缓存位置:默认情况下,缓存文件会存储在 public 目录下,具体可以通过配置 config.action_controller.page_cache_directory 来更改。

清除缓存:可以使用 expire_page 方法来清除缓存。例如,在某个特定操作后,使用 expire_page 来确保缓存被更新。

通过这些步骤,你可以在 Rails 中使用 actionpack-page_caching Gem 来实现页面缓存,虽然这并不是 Rails 官方支持的功能,但在特定情况下仍然可以提升性能。

08 自定义配置目录

如果你想自定义这个路径,可以在 config/application.rb 或相关的环境配置文件中设置:

config.action_controller.page_cache_directory = Rails.root.join('custom_cache_directory')

这将会把缓存的页面存储到 custom_cache_directory 下。

rails page cache ruby