1

次の問題があります。Redisでアクションの結果をキャッシュしたい。このため、https://github.com/jodosha/redis-rack-cacheを使用します。アクションがRack::Cacheによってキャッシュされる必要があるという事実は、Railsで適切なHTTPヘッダー情報を設定することによって決定されます。

response.headers['Cache-Control'] = 'max-age=3600, public, must-revalidate'

これで、Rack::CacheはRedisに応答を正しくキャッシュします。ただし、このヘッダーはブラウザに応答をキャッシュするように指示しますが、これは望ましくありません。リクエストはサーバー側で排他的にキャッシュする必要があります。

回避策として、リバースプロキシとして使用するnginxのヘッダーを置き換えていますが、より洗練された方法が必要です。誰かがそれを行う方法を知っていますか?

よろしく、マーティン

4

1 に答える 1

1

1つのオプションは、Rack :: Cacheの上にある独自のミドルウェアを作成し、これらのCache-Controlヘッダーを応答から削除することです。

次のような単純なもの:

  def call(env)
    status, headers, body = @app.call(env)
    headers.delete("Cache-Control")
    [status, headers, body]
  end

ミドルウェアとして機能します。

于 2012-05-03T19:02:16.333 に答える