如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?
Posted
技术标签:
【中文标题】如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?【英文标题】:How do I set HTTP Headers in Ruby/Sinatra app, hosted on Heroku? 【发布时间】:2011-05-11 02:54:50 【问题描述】:我有一个基于 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
【问题讨论】:
【参考方案1】:在 Sinatra 中,您可以使用 cache_control
方法:
get '/' do
# Cache for 24 hours
cache_control :public, max_age: 86400
# Your magic goes here
end
【讨论】:
【参考方案2】:通常动态生成的页面没有缓存,所以
response.headers['Cache-Control'] = 'public, max-age=300'
header 是正确的起点。
尝试使用“Use a Web-based service”中的一项服务,看看它们是否显示在从您的站点发回的 HTTPd 标头中。
【讨论】:
看起来我已经正确设置了,通过链接的工具我可以确认。 处理缓存问题是 a** 中的一个痛苦,无论是从客户端还是服务器端。【参考方案3】:您还可以使用以下语法访问响应对象的标头字段:
response['Cache-Control'] = 'public, max-age=600'
【讨论】:
以上是关于如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?
如何将客户端的正确 IP 地址获取到 Heroku 上托管的 Node socket.io 应用程序中?
如何将数据从 Heroku 上托管的 Node.js 应用程序发送到托管在完全独立(Cpanel)服务器上的 PHP 文件?