6

Rack::Deflater を有効にして応答本文を gzip するときに、奇妙なことに遭遇しました。おそらく何か不足していますが、これを有効にすると応答が圧縮されますが、リソースの ETag は要求ごとに変更されます。これにより、アプリは 304 を送信するのではなく、毎回応答するように強制されます。これは、Rack::Deflater を有効にしなくても機能し、ページ ソースが変更されていないことを確認しました。薄い Web サーバーとしてレール アプリを実行しています。

Gemfile.lock https://gist.github.com/2510816

どうにかしてラック ミドルウェアからもう少し多くの出力を取得できるので、何が起こっているのかを確認できるでしょうか?

前もって感謝します。

4

1 に答える 1

11

そのため、元の問題を修正しましたが、まだ望ましい結果が得られていません。Rack::Deflater は、ミドルウェア スタックで Rack::ETag の前に配置する必要があることがわかりました。これにより ETag がすべてのリクエストを変更する理由はまだわかりませんが、変更config.middleware.use "Rack::Deflater"する config.middleware.insert_before "Rack::ETag", "Rack::Deflater"と ETag がリクエスト全体で一貫したものになります。私はまだ 304 を取得していませんが、これはキャッシュ制御ヘッダーが正しくないためであり、元の問題とは無関係だと思います。うまくいけば、これは将来誰かを助けるでしょう。

于 2012-04-28T12:05:07.973 に答える