Заголовки Cache-Control и динамические изображения Heroku - PullRequest
1 голос
/ 14 августа 2011

Я пытаюсь понять 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

Так что мне кажется, что изображение генерируется на сервере каждый раз.А потом кешируется браузером на месяц.Таким образом, единственная экономия здесь - это когда один и тот же посетитель пытается просмотреть одно и то же изображение.

Если разные посетители пытаются просмотреть одно и то же изображение, оно все равно будет сгенерировано и отправлено.Не очень ли это полезно, если вы спросите меня.

Правильно ли мое понимание или одно и то же изображение не будет регенерировано для каждого посетителя сайта?

1 Ответ

3 голосов
/ 14 августа 2011

Приложения Heroku в стеках Aspen и Bamboo находятся на Varnish, HTTP-ускорителе.Varnish будет кэшировать вывод из вашего приложения в соответствии с подсказками, предоставленными стандартными заголовками HTTP, чтобы описать кэшируемость страницы.Эти заголовки те же, что и в браузерах, поэтому правильная установка этих заголовков дает вашему приложению двойной прирост скорости при работе в Heroku: на уровне Varnish и снова в браузере пользователя.

Если выне знаю, Varnish - это действительно быстрый кеш, который, по сути, находится между вашим приложением и интернетом.Когда заголовки говорят, что кеширование безопасно, Varnish делает это и отвечает на дополнительные запросы с помощью кешируемого объекта, даже не затрагивая ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...