17

簡単な質問、いくつかの推奨事項を探しています。データベースからデータを要求し、テーブルでユーザーに表示するサイトがあります。私はjQuery(AJAX)、php、およびMySQLを使用しています。

データを表示するテーブルのHTMLを生成するのに最適な場所はどこですか:phpがそれを生成してサーバーからすべて(HTML +データ)を送り返すか、phpがデータとjQueryを送り返すかコードはテーブルを作成し、データを挿入しますか?

これはイントラネット上で実行されていますが、私はそれでも最も高速なアプローチを好みます。

アップデート:

他の人に役立つかもしれない場合に備えて、このトピックに少し追加情報を追加したいと思います。私はここに提示された分離のアイデアに完全に同意し、それを私の設計アプローチとして採用しました。PHPを使用して必要なデータを取得してJSONに整理し、jQueryを使用してHTMLを生成し、返された情報を表示しました。この場合、jQueryを使用してスプレッドシートスタイルのテーブルフォームを作成し、PHPから返された値を持つ「セル」にデータを入力していました。行と列がいくつかあるので、問題なく動作しましたが、16 x 16のテーブルで、jQueryを使用して入力要素を動的に作成しています...

この時点で、私は再びIE6である醜い幽霊に出くわしました。

IE6は今でも私が働いている承認済みのブラウザーなので、アプリはその上で機能する必要があります。FirefoxとOperaでデザインをテストすると、インターフェイスの読み込みが速く、使用するのが楽しいです。IE6で同じコードを実行すると、インターフェイスの生成に非常に時間がかかります。アプリが応答していないと思って、ユーザーがもう一度クリックし始めるのに十分な時間。新しいブラウザーではコードが正常に実行されるため、これはIE6にあるJavaScriptエンジンにしかチョークできません。そのため、インターフェイスの一部を再設計して、PHPが少なくとも内部テーブルフォーム要素を生成し、データを入力して、それをクライアントに送り返すようにしました。それは私が望んでいた素晴らしい分離を壊しますが、IE6のクライアント側で物事をスピードアップする他の方法は見当たりません。

とにかく、他の人がここでの結果に興味があるかもしれないと思っただけで、私のような他の初心者にとって、ブラウザのサポート要件がデザインの選択にどの程度影響するかを考えてみてください。

4

8 に答える 8

8

良い戦略は、「関心の分離」アプローチを使用することです。つまり、クライアント側を使用して、GUIの側面で物事をきれいにすることです。

また、この戦略は、Google Web Toolkit(GWT)などのWebの現在の傾向とよく一致していることにも注意してください。

于 2009-12-18T13:30:33.353 に答える
4

イントラネットの帯域幅はボトルネックではなく、古い不格好なIE JSエンジンがボトルネックになる可能性があるため、生成されたHTMLを送信すると思います(より優れたブラウザーでも、HTMLフラグメントのネイティブ解析はJSでDOMを構築するよりも高速です)。

于 2009-12-18T13:30:17.033 に答える
3

ほとんどの人は、AJAXは純粋なデータであり、HTMLマークアップであってはならないと言うでしょう。私はこれに同意しません。AJAXはHTMLのポケットを画面内の場所にロードするのに優れていることがわかりました。コーディングの観点からすると、サーバー側のテクノロジーを使用してHTMLを生成し、JavaScriptを必要なページに配置する方が簡単だと思います。それはうまく機能し、効率的であり(innerHTMLは新しいhtmlをページに入れる最も効率的な方法です)、コードのメンテナンスが簡単になります。javascriptにhtmlを生成させる場合、PHPだけでなく、表示に変更があった場合に2か所について心配する必要があります。

于 2009-12-18T13:31:06.987 に答える
1

ネットワーク帯域幅の点で最も高速なのは、PHPでJSONを出力し、jQueryを使用してマークアップを作成することです。

クライアント側の処理(そして間違いなく実装)の点で最も高速なのは、PHPを使用してマークアップを生成し(たとえばテンプレートを使用して)、Ajaxを介して渡すことです。

于 2009-12-18T13:31:15.317 に答える
1

ページをユーザーに返す前にデータを取得してテーブルを生成できる場合は、すべてPHPで実行してください。AJAXで何も得られない場合は、AJAXのフラッシュを追加する必要はありません。

ユーザーがサーバーから複数のデータ更新をフィルタリング/要求する場合...PHP経由でJSON形式のデータをJavascriptに返し、JavascriptにHTMLをページにレンダリングさせます。

于 2009-12-18T13:31:34.867 に答える
1

絶対に最速のアプローチを使用する場合:PHPを使用してHTMLサーバーサイドをレンダリングします。より保守しやすくクリーンなコードアプローチが必要な場合は、PHPにJSONをAJAXコードに送信させます。このようにして、プレゼンテーションや動作からデータを適切に分離することができます。クライアント上の同じ場所からHTMLのレンダリングをすべて制御できる場合は、サイトの外観と動作を簡単に変更できます。

于 2009-12-18T13:33:34.610 に答える
0

他の回答では見ていなかったことが1つあります。一貫性:レンダリングされたページを見ると、彼はそのページを静的htmlとして保存できることを期待しています。それでも、すべてが同じであれば、ユーザーは静的ページとして表示されるものを保存できるはずです。したがって、サーバーからhtmlに事前にレンダリングされたページを送信する必要があります。

于 2009-12-18T13:42:04.407 に答える
0

サーバー側でHTMLを作成し、JavaScriptを使用してHTMLを少し改良します。すべてのブラウザで有効なHTMLページを作成することはできず、サーバー側からの検出は100%確実ではありません。多くのブラウザではユーザーが別のブラウザを選択できるため、ユーザーエージェントIDを信頼することはできません。ブラウザのファミリに固有のHTMLを作成する唯一の方法は、使用されているプロパティが実装されているかどうかを確認することです。

私が報告することは一般的に有効です。特定のケースでは、それは有効ではありませんでした。

于 2009-12-18T14:05:44.170 に答える