2012-03-19 6 views
1

私はRuby 1.9.3でRails 3.2.2アプリケーションを実行しています。私のプロダクションサーバーでは、Phusion Passenger/Apache Serverを実行しています。Rails:サーバーがクライアントに配信するHTTPレスポンスのサイズを調べる方法は?

関連モデルの冗長データを含むJSON形式の比較的大量のデータオブジェクトを配信します。サーバーが提供するバイト数、および冗長なコンテンツをサーバーでどのようにgzipできるかを知りたい冗長データは、出荷されるべきhttp応答のサイズに影響を与える。

ありがとうございました!

+0

データが不要な場合は、データを圧縮するのではなく、レスポンスでそのデータを取り除く方法をまず調べる必要があります。 – Alex

+0

データを削除するとjsonのフォーマットが複雑になり、データを削除して不定形のオブジェクト形式を解析する際に多くの計算処理オーバーヘッドが発生します。 – alex

+1

JSONをエンコードするには "多くの計算量のオーバーヘッド"が少ないでしょう。圧縮にはJSONエンコーディングよりも多くのサイクルがかかると思う。私は[RABL](https://github.com/nesquena/rabl)や[Jbuilder](https://github.com/rails/jbuilder)などの宝石を使ってJSONビューを使用したいと思います。素敵な[RailScast on RABL](http://railscasts.com/episodes/322-rabl)があります。最も重要な点は、冗長データにユーザーの帯域幅を浪費する理由 – Alex

答えて

1

一般的にどのくらいのデータが送信されているかを知りたい場合は、curlまたはwgetを使用してリクエストを作成してファイルに保存します。ファイルのサイズは(およそ)レスポンスのサイズです。典型的には小さいヘッダーを含む。ファイルをgzipして実際にワイヤを通ってどれくらいが送信されているかを確認します。

クールでも、お気に入りのブラウザのデベロッパーツールを使用してください(これはChromeですか?)。 「ネットワーク」タブを選択し、実行されたGET(またはPUTまたはPOST)リクエストをクリックして、チェックアウトします。 1つのタブにはレスポンスのヘッダーが含まれ、そのうちの1つにContent-Lengthヘッダーが含まれている可能性があります。サーバーがgzipに設定されていると仮定すると、圧縮の程度を確認できます(Content-長さ)。タイミングはすべてそこにあるので、接続を取得するのにどれだけの時間がかかるか、サーバーが作業を行うか、サーバーがデータを返すかなどを見ることができます。実際に何が起こっているのかを理解するためのすばらしいツール。

しかしAlex(Capital A)のコメントをエコーし​​ます.AJAXリクエストで大量のデータを送信する場合は、ほとんどの場合アーキテクチャとデザインについて考える必要があります。すべてではなく、ほとんど。

+0

あなたの答えに感謝します!私は本当に私のお気に入りのブラウザであるクロムで物事を分析する可能性について知っている;)私はちょうど配信されるコンテンツのサイズが各要求のレールやApacheによって記録されているといいと思った。 私のクライアントがWebブラウザではないので、私はajaxでデータをロードしません。 – alex

+0

いくつかの追加情報: gzip/mod_deflateがデフォルトでApacheで有効になっていないことがわかりましたので、ここで[有効にする]方法です。 (http://trevorturk.wordpress.com/2009/06/11/speed-up-your-apachepassenger-rails-app-in-2min/) 実際にレスポンスのサイズは10倍に縮小されていますすべての冗長データが削除されても! しかし、私は実際にはより大きなタイムスパンで特定のAPIによって引き起こされる転送データの量を監視することを可能にする解決策を探しています – alex

+1

http://railscasts.com/episodes/276-testing-time-web-requests –

関連する問題