2017-02-17 21 views
2

オフラインでアクセスできる必要があるHTMLページの形式でインタラクティブなレポートを作成しています。これらのオプションのどれがパフォーマンスを向上させるでしょうか?クライアント側とサーバー側のレンダリングオフラインのHTML

  • 事前に(サーバー側のスクリプトを使用して)すべてのHTMLを作成し、1つ(ランディングページ)以外のすべての「ビュー」を非表示にします。ユーザーがメニュー項目をクリックすると、現在表示されているビューを非表示にし、その選択に対応するビューを非表示にします。
  • すべてのデータをJavaScript変数/オブジェクトとして含めます。ユーザーがメニューから何かを選択したら、Handlebars.jsのようなテンプレートエンジンを使用して必要なHTMLを作成します。

私は、クライアント側とサーバー側のレンダリングをカバーする他の記事を見つけましたが、特定のデータポイントを要求するためにサーバーにコールバックできないオフラインアプリケーションに特有のものは何もありません。私の場合、すべてのデータ(数百から数千のレコードまで)は、最初からHTMLに含める必要があります。

答えて

1

単純な理由から、データとテンプレートをクライアントに送信し、クライアント上でHTMLをレンダリングします。これはおそらく実際のデータによりますが、はるかに高速です。

まず、サーバー上のHTMLを事前レンダリングすると、転送するデータの量が大幅に増えます。テンプレートと生データはずっと小さくなるため、アプリケーションの読み込み速度が向上します。

第2に、ユーザーはレンダリングされたすべてのページを必要としない場合があります。一部のページのみが使用された場合、サーバー上のすべてのページをレンダリングするためのリソースが無駄になります。

もう1つポイント - すべてがクライアント上でレンダリングされた場合、アプリケーションを完全にサーバーレスにすることは簡単です。 jsonファイルをアプリケーションコードとアセットと共にデータとともに出荷することができます。この場合、サーバーなしでも動作します(もちろん、このユースケースがあなたの状況に関係している場合に限りあります)。

+0

ありがとうございます!サーバーからクライアントへの転送時間を計算式から外し、HTMLがオフラインで実行されている間だけページの読み込み時間を考慮すると、テンプレート/生データはHTMLの事前レンダリングよりもまだ高速ですか? – atm

+1

何が速くなるかを予測するのは難しいです。クライアントにデータを取得してからすべてを一度にレンダリングすることができます。このようにして後で違いはありません。全体の時間は、サーバー側またはクライアント側のレンダリングが高速かどうかによって異なります。また、多くのユーザーがいる場合は、クライアントでレンダリングすることでサーバーから負荷を取り除きます。 –

関連する問題