我有一个相当简单的应用程序(只有一个index.html
文件和一个css文件 - 它实际上只是一个静态页面)在Heroku上托管。
我使用Sinatra在Heroku上托管它。 'app'本身很简单:
require 'rubygems'
require 'sinatra'
get "/" do
File.read(File.join('public', 'index.html'))
end
问题是,如何为静态资产设置HTTP响应标头?特别是,我想为缓存目的设置Expires
标题。
编辑:我希望将所述标题添加到静态资源(即/public
下的那个,如背景图片,图标等)
答案 0 :(得分:16)
除了我不会通过Sinatra堆栈只是为了提供静态文件,你打电话
cache_control :public, max_age: 60
缓存一分钟。 cache_control
是helper that comes with Sinatra。
否则,我建议您查看http://www.sinatrarb.com/configuration.html以了解Sinatra的设置方式,以便您无需处理静态文件。
希望这有帮助。
编辑:我刚看到你明确要求Expires
标题。我不确定,但这应该与Cache-Control
完全相同。对不起困惑
答案 1 :(得分:5)
作为@ awendt答案的扩展,Sinatra实际上可以处理静态文件而无需明确定义路径并打印文件。
添加:
set :static, true
..您可以将index.html
和stylesheet.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