私はHerokuのHTTPキャッシュを理解しようとしています。 their articleを読んだ後、私はCache-Control HTTPヘッダがどのように機能しているのか不思議です。ヘッダはコントローラのアクションに設定されている資料のsample application mentionedでキャッシュコントロールヘッダーとHeroku Dynamicイメージ
:画像がされているようなので、私には見え
def data
qrcode = RQRCode::QRCode.new(self.message, :size => self.version, :level => self.ecc.to_sym)
qrcode.to_s
end
:
def image
@qrimage = QRImage.find_by_md5(params[:md5])
if @qrimage
headers['Cache-Control'] = 'public; max-age=2592000' # cache image for a month
send_data @qrimage.data, :filename => @qrimage.filename, :disposition => 'inline', :type => "image/png"
else
render :nothing => true, :status => 404
end
end
@qrimage.data
ためのコード等であります毎回サーバー上で生成されます。その後、ブラウザで1か月間キャッシュされます。したがって、ここで唯一の節約は、同じビジターが同じイメージを表示しようとするときです。
異なるユーザーが同じイメージを表示しようとすると、それは引き続き生成され、送信されます。あなたが私に尋ねるなら、本当に役立つものではありません。
私の理解は正しいのですか、サイトの訪問者ごとに同じ画像が再生成されませんか?
ワニスはすべての訪問者のためにイメージをキャッシュしておきます。ブラウザキャッシュは、最初の訪問後に訪問者のイメージを保持しますか? – SooDesuNe
はい。ワニスには、セッションや特定の訪問者の概念はありません。それは、誰にとっても同じことです。ブラウザはそれ自身のためにキャッシュするため、要求/サーバーへの負荷が軽減されます。 – coreyward
ユーザーにセッションクッキーを設定した場合(Rack:セッションは空ではなく、GoogleアナリティクスでもCookieが削除されます)、ワニスはこれらのヘッダーを無視してリクエストがアプリにヒットします。 – stef