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

rya*_*ogo 7 ruby caching heroku sinatra http-headers

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

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

require 'rubygems'
require 'sinatra'

get "/" do
    File.read(File.join('public', 'index.html'))
end
Run Code Online (Sandbox Code Playgroud)

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

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

awe*_*ndt 16

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

cache_control :public, max_age: 60
Run Code Online (Sandbox Code Playgroud)

缓存一分钟.cache_controlSinatra助手.

否则,我建议您查看http://www.sinatrarb.com/configuration.html,看看如何设置Sinatra,这样您就无需处理静态文件.

希望这可以帮助.

编辑:我刚看到你明确要求Expires标题.我不确定,但这应该和我一样Cache-Control.对困惑感到抱歉


Nic*_*ick 5

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

通过增加:

set :static, true
Run Code Online (Sandbox Code Playgroud)

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

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

set :public, "your_folder_name"
Run Code Online (Sandbox Code Playgroud)

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

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