2010-11-21 13 views
0

最近Cでhttpプログラミングを始めると、GETとPOSTを処理できる機能しているサーバーがあります。私の質問は私のサイトの読み込み時間に来て、どのように私はレスポンスヘッダとレスポンスメッセージを送るべきですか?C WebサーバーとChrome開発ツールに関する質問

Chromesリソーストラッキングツールでは、ほとんどの場合(サーバーと同じネットワーク上で)接続/送信/プロキシ/ブロック/待機時間はほとんどないことがわかりましたが、受信時間はさまざまです激しく私は受信時間が何を含んでいるか完全にはわからない。私はPNGファイルや時にはjavascriptファイルやまれに他のファイルに長い受信(40〜140ms以上)することがほとんどありますが、それは一貫していません。

誰でも私のためにこれにいくつかの光を当てることができますか?

私はまだ多くのテストを行っていませんが、ヘッダー/メッセージの送信に使用する方法を変更したかどうかは疑問でした。私は現在、サイトのすべてのファイルをサーバーメモリにキャッシュしています(すべて同じchar *内にあります)。要求されたファイルを送信するとき、私はheader/fileコンボで1つのsend()コールを行います(文字列操作は含まれていません。b/cはすべてサーバの起動時に事前に行われます)。

複数の小さなsend()呼び出しに分割する方が良いでしょうか?

Google Chromeのツール(ローカルのネットワークでワイヤレスルータ接続)で取得できる統計情報は、120msから570msに読み込まれます。 19ファイル、計139.85KBです。それはTinyCoreのLinuxとAsus 901ネットブック(原子1.6ghz、2GBのddr2)です。私は、スレッドの起動方法や他のいくつかの方法でできる最適化がいくつかあることは知っていますが、それが多くのatmに影響を与えているかどうかはわかりません。

+0

Webサーバーにプロファイリング情報またはデバッグ出力情報を追加しましたか?サーバーの側から要求 - 応答サイクルの進行を見ることができるように、コード内の "主要な"操作の間に高分解能タイミング情報を追加すると便利です。 –

+0

私は現時点ではプロファイリングがなく、必要最小限のデバッグを行っています。 Chromeの開発ツールに大きく依存している可能性があります。私は本当に良いサイトの配信/読み込み時間のスピードで探していなければならない分野では目が見えません。 – Wolftousen

答えて

1

send()で応答全体を送信する場合は、TCP_NODELAYソケットオプションを設定する必要があります。

それでも問題が解決しない場合は、Wiresharkのようなパケットキャプチャツールを使用して、遅延が導入されている場所を確認できます。

+0

私はTCP_NODELAYフラグを設定します.Wiresharkが教えてくれていることを、チップのおかげで分かります。 – Wolftousen

関連する問題