rails7: 纯静态页面 static_pages

纯静态页面的管理
更新于: 2023-12-15 20:27:34

关闭/开启缓存

其实就是创建 tmp/caching-dev.txt 这个文件。

rails dev:cache

添加 gem

因为 rails4 之后,默认的 caches_page 就已经被移除提了。

gem "actionpack-page_caching"

添加配置

配置文件在这里 ./config/application.rb

config.action_controller.perform_caching = true

添加ctrl命令

rails g controller StaticPages home about contact

路由

Rails.application.routes.draw do
  get 'static_pages/home'
  get 'static_pages/about'
  get 'static_pages/contact'

  root 'static_pages#home' # 设置根路径
end

controller

用户访问之后,默认就会在 public 目录下产生对应的文件。

  • cache_pages: 会生成页面到 public 下面
  • 清除: expire_page('/static_pages/home')
  • 清除所有: rake tmp:cache:clear
class StaticPagesController < ApplicationController
  caches_page :home
  
  def home
    # 这里可以添加一些处理逻辑
  end

  def about
    # 这里可以添加一些处理逻辑
  end

  def contact
    # 这里可以添加一些处理逻辑
  end
end

常用配置

常用配置及 snippets

配置代码
开启缓存
config.action_controller.perform_caching = true
缓存目录
config.action_controller.page_cache_directory = Rails.root.join("public", "cached_pages")
不同的 ctrl 自定义
class WeblogController < ApplicationController
  self.page_cache_directory = :domain_cache_directory

  private
    def domain_cache_directory
      Rails.root.join("public", request.domain)
    end
end
根据 action 缓存
class WeblogController < ActionController::Base
  caches_page :show, :new
end
更新缓存
class WeblogController < ActionController::Base
  def update
    List.update(params[:list][:id], params[:list])
    expire_page action: "show", id: params[:list][:id]
    redirect_to action: "show", id: params[:list][:id]
  end
end

参考