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

У меня есть работающее приложение, основанное на 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

Ответы [ 3 ]

30 голосов
/ 17 ноября 2010

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

response.headers['Cache-Control'] = 'public, max-age=300'

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

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

0 голосов
/ 24 ноября 2017

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

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

  # Your magic goes here
end
0 голосов
/ 18 ноября 2010

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

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