如何在Heroku上托管的Sinatra应用程序中设置HTTP响应(缓存)标头

时间:2011-01-27 07:22:11

标签: ruby caching http-headers heroku sinatra

我有一个相当简单的应用程序(只有一个index.html文件和一个css文件 - 它实际上只是一个静态页面)在Heroku上托管。

我使用Sinatra在Heroku上托管它。 'app'本身很简单:

require 'rubygems'
require 'sinatra'

get "/" do
    File.read(File.join('public', 'index.html'))
end

问题是,如何为静态资产设置HTTP响应标头?特别是,我想为缓存目的设置Expires标题。

编辑:我希望将所述标题添加到静态资源(即/public下的那个,如背景图片,图标等)

2 个答案:

答案 0 :(得分:16)

除了我不会通过Sinatra堆栈只是为了提供静态文件,你打电话

cache_control :public, max_age: 60

缓存一分钟。 cache_controlhelper that comes with Sinatra

否则,我建议您查看http://www.sinatrarb.com/configuration.html以了解Sinatra的设置方式,以便您无需处理静态文件。

希望这有帮助。

编辑:我刚看到你明确要求Expires标题。我不确定,但这应该与Cache-Control完全相同。对不起困惑

答案 1 :(得分:5)

作为@ awendt答案的扩展,Sinatra实际上可以处理静态文件而无需明确定义路径并打印文件。

添加:

set :static, true

..您可以将index.htmlstylesheet.css添加到public/文件夹。然后,当您访问http://localhost:9292/stylesheet.css时,您将获得静态文件。

如果您想使用其他文件夹名称而不是默认public/,请尝试:

set :public, "your_folder_name"

如果我们想要不那么明确,我们可以在Sinatra为我们启用public/的知识中创建:static文件夹:)

来源: http://www.sinatrarb.com/configuration.html#__enabledisable_static_file_routes