Как установить 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