6

現在、サイズが重要な API を開発しています。回答に含まれるバイト数をできるだけ少なくしたいのです。JSON の回答を最適化しましたが、Rails は依然として多くの奇妙なヘッダーで応答します

HTTP/1.1 200 OK
Server: nginx/0.7.67                            # Not from Rails, so ok.
Date: Wed, 25 Apr 2012 20:17:21 GMT             # Date does not matter. We use ETag Can I remove this?
ETag: "678ff0c6074b9456832a710a3cab8e22"        # Needed.
Content-Type: application/json; charset=utf-8   # Also needed.
Transfer-Encoding: chunked                      # The alternative would be Content-Length, so ok.
Connection: keep-alive                          # Good, less TCP overhead.
Status: 200 OK                                  # Redundant! How can I remove this?
X-UA-Compatible: IE=Edge,chrome=1               # Completely unneded.
Cache-Control: no-cache                         # Not needed.
X-Request-Id: c468ce87bb6969541c74f6ea761bce27  # Not a real header at all.
X-Runtime: 0.001376                             # Same goes for this
X-Rack-Cache: invalidate, pass                  # And this.

そのため、不要な HTTP ヘッダーがたくさんあります。サーバー(nginx)でそれらをフィルタリングできますが、これをレールで直接停止する方法はありますか?

4

3 に答える 3

11

これは、Rack ミドルウェアを使用して行うことができます。1 つで実行する例については、https://gist.github.com/02c1cc8ce504033d61bfを参照してください。

アプリの設定に追加するときは、次のようなものを使用しますconfig.middleware.insert_before(ActionDispatch::Static, ::HeaderDelete)

を実行したときに表示されるリストの最初の項目の前に挿入したいのですがrake middleware、私の場合はActionDispatch::Static.

これまで Rails のコンテキストで Rack に触れたことがない場合は、 http://guides.rubyonrails.org/rails_on_rack.htmlが多少役立つかもしれません。

于 2012-04-25T21:43:35.557 に答える
9

Nginx を使用しているため、別のオプションはHttpHeadersMoreModuleです。これにより、どのヘッダーがネットワークに送信されるかを正確に制御できます。

あなたの場合、特にmore_clear_headersディレクティブを次のように使用する必要があります。

more_clear_headers Server Date Status X-UA-Compatible Cache-Control X-Request-Id X-Runtime X-Rack-Cache;

実際には必要ないため、これによりヘッダーもクリアServerされます。バイトを節約しようとしている場合は、少しずつ役に立ちます。

このモジュールを使用するには、Nginx を自分でコンパイルする必要がありますが、怖がる必要はありません。Nginx は非常に簡単にコンパイルできます。インストール手順に従うだけです。

于 2012-07-09T07:17:56.110 に答える