2011-07-09 15 views
4

私はコードを読んでいました.JAはGoogleのウェブサイトで火薬瓶を使用していました。AJAXレスポンス用のJSON over HTMLの利点

Googleミュージックのウェブサイトでは、左側のナビゲーションリンクをクリックすると、Googleがajaxを介して右側の曲に曲を読み込みます。今私は、私は通常、getメソッドからHTMLを取得するAjaxを介してコンテンツをロードし、受信した新しいHTMLと体のHTMLを交換したい場合は

しかし、Googleの音楽に私はNAVのリンクをクリックしたときにことがわかり

Googleはすべてのタイトル、アルバムを持つ1000曲のJSONデータを取得し、htmlを作成します。私はページを呼び出したのと同じ事がフルページのHTMLを取得し、私はJSONを使用する利点は、Googleが

+0

私は、この質問に別の方法として「返されたJSONデータに基づいてHTMLクライアントサイドをjavascriptで構築する利点は何ですか?サーバーサイドにHTMLが構築され、AJAX経由で送信され、DOMに直接追加されます。 - 個人的に私は前者を後者よりも好む。私は実際に後者をやっていないし、本当に計画していない。 – WhiskeyTangoFoxtrot

答えて

4

JSONはHTMLよりもデータレスポンスが大幅に小さくなるため、クライアントへのダウンロード速度が向上します。しかし、使用しているブラウザは、HTMLがクライアント上に構築され、DOMにロードされる速さに強く影響します(古いバージョンのIEが最も遅い)。より遅いjavascriptエンジンを使用するブラウザでは、ページが異なる動作をするかどうかは興味深いでしょう。

私自身のテストでは、JSONから150行5列のHTMLテーブルを作成するために、IE 6がChromeより60倍長くかかることがわかりました。

1

にそれをやった方法であるかを知りたい身体に

を置き換えることをしなければならなかった場合Ajaxメソッドを呼び出すページへのデータのレイアウトと表示を延期します。あなたの場合、HTMLをサーバー上でフォーマットします。

1

JSONはデータを表現する単なる手段ですが、htmlはデータ+マークアップを表します。それで、htmlはもっと多くの情報を含んでいるので、サイズがはるかに大きくなります。また、htmlが使用されている場合は、実際にはサーバーがページのすべてのレンダリングを行いますが、異なるフレームにデータの一部を挿入する場合はどうなりますか?

したがって、JSONの形式のデータだけが転送される場合、html応答が意味をなさないことがありますが、AJAXはより効率的です。

3

HTMLは、データの表示方法を制御する方法です。次のようなHTMLタグを書くと:

<h1>Your Title</h1> 

「Your Title」のテキストはデータです。 h1タグはプレゼンテーションです。ほとんどのシーズン開発者は、これらの2つのもの(データとプレゼンテーション)を可能な限り分離しようとします。この分離の背後にある考え方は単純です。データが常に単なるデータであれば、このデータの表示方法を変えることができます。 Googleは、Google Musicの見た目をリフレッシュしたいと考えています(私は彼らがすぐにやりたいことを願っています)。データモデルやAjaxコールの動作方法に触れる必要はなく、データはアーティスト名、トラックタイトルなど。

一方、データとプレゼンテーションを一緒に送信していた場合は、すべてを改訂する必要があります。新しいルック&フィールではアーティスト名がh1タグになることはありませんAJAX呼び出しは<h1>Artist title</h1>を返します。新しいタグにアーティスト名を入力するのではなく、Ajax呼び出しがデータを返す方法を変更する必要があります。

これは設計パターンの中核となる基本原則であり、この原則に従う設計パターンはほとんどすべてです。 mvcについてこれまで聞いたことがあるなら、それはあなたの層の分離についてです。モデルはデータを表し、ビューはマークアップまたはプレゼンテーションを表し、コントローラはこれらの2つがどのように相互作用するかを制御するロジックを表します。

データ呼び出しでJSONを処理すると、後で問題に遭遇しないようになり、JSONは非常に単純なデータ形式であるため、コードがより洗練されて簡単になります。 (@ alex-gitelmanが既に言ったように、転送する方が速いです!)

+0

私のアプリケーションは、いつでも変更できるように、テンプレートが別の場所に配置されているMVCベースです。しかし、AJAXの呼び出しでは、私はテンプレートをデータでロードし、それを本文に挿入します。だから私のajaxレスポンスはhtml + JSONですが、GoogleではJSONだけでレスポンスがあります。 htmlでない – user1

+0

正解、Googleは私が記述した理由のために正しい方法をしています。 –

0

主に簡潔です。 HTMLではなくRAWデータのみを送信すると、データペイロードが大幅に削減されます。

JSONパーサーが組み込まれているかどうかによって、さまざまなブラウザがさまざまな速度でJSONを処理します。 JSONパーサーシムを使用できるIE6は例外的な例外です(Douglas Crockfords json2.jsを参照してください)

いつものような特別な処理をあなたがデータを持っていれば、より柔軟な力が得られます。例外的な理由がない限り、私は一般的にこのアプローチを利用しません。

関連する問題