0

アプリケーションによって提供されるページの 1 つが非常に長い (約 8Mb のソース HTML、ほとんどがテーブル)。これ自体が間違ったアーキテクチャの兆候であることは知っていますが、すぐに変更できない状況があります:(

IE 以外のほぼすべてのブラウザで、ページは問題なく表示されます。もちろん、平均的なブラウザよりも遅いですが、表示にかかる時間はほとんどコードのダウンロード速度によって決まるようで、問題はありません。

ただし、IE (7、8、および 9) では大きく異なります。ダウンロード後、フリーズした画面効果でページが約 10 ~ 15 秒間非常に遅くなり、その後、顕著なスクロールラグが発生し、「スクリプトの実行が遅い」というメッセージが表示されます。ページで実行されている JavaScript。IE9 は、そのページを表示するときに約 800Mb の RAM も必要とします。

そのサイズのプレーン テキスト コンテンツを提供する場合ははるかに優れていますが、フォーマットされた HTML テーブルが問題を引き起こしているようです。long DOM はどのバージョンの IE でもブロッカーのようです。

私がどのような答えを望んでいるのかわかりません-明らかに適切な解決策は、サーバー側でページアーキテクチャを分割し、ajaxを介して少しずつ提供することでページアーキテクチャを変更することですが、それでも-魔法のプラグマまたはIE 用の js を使用して、DOM ツリーを高速化することで何をするのをやめるのですか?

4

1 に答える 1

2

クライアントによるページのダウンロードをチャックするのが最善の解決策です。ただし、この"table"タグは IE で最もレンダリングが遅いタグであることに注意してください (私の経験では)。したがって、最初のステップでは、HTML ドキュメントにいくつかの変更を加える必要があると思います。以下にいくつかの提案を示します。

  1. インライン スタイル シートをクリアし、可能な限り CSS クラスを使用します。HTML ドキュメントのサイズを小さくするのに役立ちます。
  2. TABLE を使用する代わりに、他の式を使用してください。DIV を使用することが私の最初の推奨事項です。ドキュメントを単純化すると、パーサーはできるだけ簡単にコードを読み取ることができます。したがって、それらを読みやすくします。何度も書くことが少なくなり、ドキュメントをはるかに小さくするのに役立ちます。
  3. すべてのスペース、タブ、改行文字、およびその他の多くの余分なコンテンツを HTML ドキュメントから削除します。
  4. クライアントにとってより役立つように、提示するコンテンツを修飾します。今の私たちと同じように、せいぜい 2 本の線しか見えません。したがって、すべてのデータを 1 ページに収めるのは得策ではなく、実際には役に立ちません。ユーザーがドキュメントをダウンロードしている間、一部のデータがサーバー上で更新される可能性があり、ユーザーが持っているデータは無効になるためです。

結局のところ、すべての文字は (仮想であるかどうかに関係なく) メモリに 8 バイト格納されることを常に覚えておいてください。これには、すべての解析変数と、xml パーサーが使用するメモリと、HTML 文字列を読み込んで DOM を作成するためのいくつかの難しいコードが含まれます。 . ドキュメントを読んで解析する速度は、サイズと同じくらい重要です。

それがあなたを助けることを願っています..乾杯

于 2012-10-29T21:20:05.513 に答える