我该如何在Heroku上托管的Ruby/Sinatra应用中设置HTTP头?

23

我有一个基于Ruby和Sinatra的工作应用程序,在Heroku上部署。

我想利用在Heroku上可用的HTTP缓存,它使用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个回答

32
通常动态生成的页面没有缓存,因此
response.headers['Cache-Control'] = 'public, max-age=300'

起点应该是header。

尝试使用“Web-based服务”中的一个服务,查看它们是否显示在从您的网站发送回来的HTTP头中。


看起来我已经正确设置了,通过链接的工具我可以确认。 - Neil
1
处理缓存问题真是一件让人头疼的事情,从客户端和服务器端都是如此。 - the Tin Man

1

你也可以使用以下语法访问响应对象的头字段:

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

0
在Sinatra中,您可以使用cache_control方法:
get '/' do
  # Cache for 24 hours
  cache_control :public, max_age: 86400

  # Your magic goes here
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接