Sinatra 緩存控制

2023-12-20 15:43 更新

要使用 HTTP 緩存,必須正確地設(shè)定消息頭,冪等的 HTTP 動作可緩存。

你可以這樣設(shè)定 Cache-Control 消息頭:

get '/' do
  cache_control :public
  "cache it!"
end

核心提示: 在前置過濾器中設(shè)定緩存。

before do
  cache_control :public, :must_revalidate, :max_age => 60
end

如果你正在用 expires 輔助方法設(shè)定對應(yīng)的消息頭 Cache-Control 會自動設(shè)定:

before do
  expires 500, :public, :must_revalidate
end

為了合適地使用緩存,你應(yīng)該考慮使用 ?etag? 和 ?last_modified? 方法。推薦在執(zhí)行繁重任務(wù)之前使用這些 helpers,這樣一來,如果客戶端在緩存中已經(jīng)有相關(guān)內(nèi)容,就會立即得到顯示。

get '/article/:id' do
  @article = Article.find params[:id]
  last_modified @article.updated_at
  etag @article.sha1
  erb :article
end

使用 weak ETag 也是有可能的:

etag @article.sha1, :weak 

這些輔助方法并不會為你做任何緩存,而是將必要的信息傳送給你的緩存 如果你在尋找緩存的快速解決方案,試試 rack-cache:

require "rack/cache"
require "sinatra"

use Rack::Cache

get '/' do
  cache_control :public, :max_age => 36000
  sleep 5
  "hello"
end


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號