2011-07-23 10 views
1


私は私のGoogle Chromeブラウザをいくつかのパケットをオフ嗅ぎ - と私がいることが分かった:
HTTPはテキストベースで圧縮された方法ではないのはなぜですか?なぜJSは圧縮されていないのですか?

  1. HTTPリクエストをテキストとして送信されている - 実際に送信が
  2. JSテキスト
  3. として受信される 'BLABLABLA GET' は、
  4. HTML \ imagesなどは圧縮された方法で転送されます。

私の質問です - HTTPとJSが圧縮されずに転送されるのはなぜですか?
完全なフォームのHTTP要求は、クッキーを含まない約3〜5バイトに圧縮でき、ページピッキングも圧縮されていると考えられます(site.com/thisisanicefile.html> site.com/ABC)
また、なぜJSはプレーンテキストとして転送され、トークンの配列としては転送されません(プログラミング言語は実行前にトークンの配列に変換されます - スクリプト言語でも同じです)。
おかげで - マーク

答えて

10

HTTPの場合:これはプロトコルが定義されている方法です。プロトコルはテキストベースです。エンディアンのようなことを心配することなく簡単に実装できます。

コンテンツ(HTML、javascript、画像、...)は圧縮されて送信できます。ブラウザとサーバーの間の "ネゴシエーション"をエンコードすることです(両方ともサポートする必要があります)。 WikipediaのHTTP Compressionページをご覧ください。

JavaScriptを事前処理された形式(ある種のバイトコード)で転送するには、バイトコード形式をすべてのブラウザで標準化して実装する必要があり、ほとんど効果がありません。サイズの違いと圧縮されたJavaScriptの縮小は、おそらくは奇妙なものではないでしょう(結局のところ、同じ量の情報をに送信しているため、良い圧縮アルゴリズムは両方のサイズを実質的に同じにする必要があります)。

また、JSコードをWebサーバー(もう1つのビルド/デプロイメントタスク)で使用可能にする前にコンパイルする必要があります。または、その場でコンパイルする(CPUの無駄)言語を制限せずにブラウザ上で本格的なソースコードインタプリタを使用することができます(eval/JSソースを処理できない場合はフロントエンドでのコード生成なし)。

+0

gzip javascriptを使用することができます。 – Raynos

+3

これはhttpコンテンツの圧縮に含まれています。私はjavascriptが特別であるとは思わない - 他のコンテンツと同様にgzipできます。 – Mat

+0

私はそれを得たと思う。ありがとうございました –

0

...時期尚早の最適化は諸悪の根源である

(C)you know who

ヘッダはテキストとして常にべきである - 唯一の体はgzip圧縮された可能性があります。 Js本体もgzipできます。ウェブサーバーの設定を参照してください。

2

HTTPヘッダーは圧縮されません。HTTPヘッダー圧縮用のプロトコルはありません。私は必要はないと思う、あなたの100kB +ウェブサイトのヘッダーのようなものではない。

個別のHTTP要求の場合、動作はサーバーの構成とクライアントによって異なります。クライアントがgzip/deflatedコンテンツを受け入れるのがうれしいと言っていない場合、サーバーは圧縮されません。クライアントがそう言っている場合、サーバの設定に応じて圧縮することを選択できます。 (例:Apacheの場合は、mod_deflateを設定する必要があります)。

たとえば、既に圧縮されているため、サーバーがJPEGとPNGを圧縮しないようにするのは完全に合理的です。サーバは、PHPハンドラが扱うものを圧縮することを選択しないで、圧縮するかどうかをハンドラに任せることもできます。 (例えば、ハンドラがPDFを配信する場合、圧縮することはできますが、MP3を配信してもそれはできません)

短い答え:すべてが異なります。

関連する問題