Я пытаюсь понять HTTP-кэширование на Heroku.Прочитав их статью , мне интересно узнать, как работает HTTP-заголовок Cache-Control.
В примере приложения , упомянутом в статье, заголовок установленв действии контроллера:
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
Так что мне кажется, что изображение генерируется на сервере каждый раз.А потом кешируется браузером на месяц.Таким образом, единственная экономия здесь - это когда один и тот же посетитель пытается просмотреть одно и то же изображение.
Если разные посетители пытаются просмотреть одно и то же изображение, оно все равно будет сгенерировано и отправлено.Не очень ли это полезно, если вы спросите меня.
Правильно ли мое понимание или одно и то же изображение не будет регенерировано для каждого посетителя сайта?