我想了解Heroku上的HTTP緩存。在閱讀their article之後,我很好奇Cache-Control HTTP頭是如何工作的。緩存控制頭和Heroku動態圖像
在文章中sample application mentioned頭被設置在控制器的行動:
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
的代碼是這樣的:
def data
qrcode = RQRCode::QRCode.new(self.message, :size => self.version, :level => self.ecc.to_sym)
qrcode.to_s
end
所以對我來說,它看起來像圖像被每次在服務器上生成。然後由瀏覽器緩存一個月。所以這裏唯一的節約是當同一個訪問者試圖查看相同的圖像時。
如果不同的訪問者試圖查看相同的圖像,它仍然會生成併發送。如果你問我的話,那不是很有幫助。
我的理解是正確的,還是不會爲每個網站訪問者重新生成相同的圖像?
因此,Varnish爲所有訪問者保留圖像緩存,並且瀏覽器緩存在第一次訪問後爲訪問者保留圖像? – SooDesuNe
是的。清漆沒有會話或特定訪客的概念。它做什麼,它爲每個人做。瀏覽器爲自身緩存,這只是減少了對服務器的請求/加載。 – coreyward
請記住,如果您爲用戶設置了會話Cookie(機架:會話非空白,即使Google Analytics放棄了Cookie),清漆也會忽略這些標頭,並且該請求會觸發應用。 – stef