2010-05-25 40 views
1

我認爲這是一個非常容易的,但我似乎無法做到正確。基本上,我試圖使用Rack中間件將默認的Cache-Control標頭設置爲由我的Sinatra應用程序提供的所有響應。它看起來像機架:: responseHeaders響應應該能夠做的正是我需要的,但我得到嘗試使用語法時的錯誤在我rackup文件證明hereRack :: ResponseHeaders用於Sinatra

use Rack::ResponseHeaders do |headers| 
    headers['X-Foo'] = 'bar' 
    headers.delete('X-Baz') 
end 

我能得到機架::緩存成功的工作方式如下:

use Rack::Cache, 
    :default_ttl => 3600 

不過,這並不能達到完全是我想要的輸出,而機架:: responseHeaders響應給出了頭的細粒度控制。

僅供參考,我的網站託管在Heroku上,並且在我的.gems清單中指定了所需的Rack Gems。

謝謝!

更新:做一些研究之後,它看起來像第一個問題是,機架:: responseHeaders響應並不在其中安裝機架的contrib(0.9.2)的版本中。我會先看看。

回答

5

如果有人有興趣,我能夠得到這個工作。它看起來並不像會有安裝在Heroku rack-contrib-0.9.3一個簡單的方法,但我唯一需要的文件是response_headers.rb,所以我簡單地複製這個到我的項目目錄,並編輯我rackup如下:

require 'rack/contrib/response_headers' 

# set default cache-control header if not set by Sinatra 
use Rack::ResponseHeaders do |headers| 
    if not headers['Cache-Control'] 
     headers['Cache-Control'] = "public, max-age=3600" 
    end 
end 

這爲我沒有在Sinatra –中指定明確的緩存控制標題(即靜態資產)的對象設置1小時的默認最大期限。

相關問題