Как установить HTTP-заголовки в приложении Ruby/Sinatra, размещенном на Heroku?

У меня есть рабочее приложение, основанное на Ruby и Sinatra, которое развернуто на Heroku.

Я хочу использовать кеширование HTTP, доступное на Heroku, которое использует Varnish.

Я не уверен, что лучший способ задать заголовки, и правильный синтаксис.

Любые мысли о наилучшем подходе и синтаксисе?

before do
    headers "Content-Type" => "text/html; charset=utf8"
end

get '/' do
    headers['Cache-Control'] = 'public, max-age=600'

    # SOME STUFF HERE

    haml :home, {:layout => :layout_minfooter}

end

Ответы

Ответ 1

Обычно динамически сгенерированные страницы не имеют кеширования, поэтому

response.headers['Cache-Control'] = 'public, max-age=300'
Заголовок

- это правильная начальная точка.

Попробуйте использовать одну из служб на Использовать веб-службу", чтобы узнать, отображаются ли они в заголовке HTTPd, отправленном обратно с вашего сайта.

Ответ 2

Вы также можете получить доступ к полям заголовка объекта ответа с помощью этого синтаксиса:

response['Cache-Control'] = 'public, max-age=600'

Ответ 3

В Sinatra вы можете использовать метод cache_control:

get '/' do
  # Cache for 24 hours
  cache_control :public, max_age: 86400

  # Your magic goes here
end