3

私は現在、そのページにたくさんの画像がある建築家のためのポートフォリオウェブサイトを構築しています。ナビゲーションはhistory.js(= AJAX)で行われます。読み込み時間を節約し、全体をより「スナッピー」にするために、他のページへのリンクについてページ本体をクロールし、これらをバックグラウンドで自動的にフェッチするスクリプトを作成しました。これまでのところ、それは魅力のように機能します。

基本的に、すべてのリンクを保持するキュー配列を保持します。setTimeout()-関数はそれらを処理し、jQuery $ .ajax()を使用して各ページをフェッチします。結果のHTMLはJavascriptオブジェクトに保存されます。

さて、ここに私の質問があります: これを異なるマシン/ブラウザ/オペレーティングシステムで使用するときに発生する可能性のある問題は何ですか?

私は考えています:

  • 最大 javascriptオブジェクト/変数サイズ(フェッチされたHTMLはjavascriptオブジェクトに保存されます)
  • 考えられるパフォーマンスの問題
  • 最大 非同期リクエストの数?
  • …あなたが考えることができることは何ですか?

よろしくお願いします、

趣味のプログラマー

4

3 に答える 3

1

Webサイト全体をクライアント側にキャッシュすることは良い考えかもしれませんが、問題を引き起こす可能性のあるものはたくさんあります。

  • メモリー
  • Webサーバーへの不要な負荷
  • 不要なページをメモリにロードする
  • 一部のユーザーはインターネットに制限があるため、そのような場合、Webサイト全体をロードするのは賢明ではありません。
  • ユーザーがnaviagetsを離れるか、更新すると、「キャッシュ」全体がなくなります

私がすることは、最初にサーバー側を最適化することです。データベースからユーザーに一連のキャッシュメカニズムを追加すると、「Expires」ヘッダーが非常に役立ちます。

それでも問題が解決しない場合は、オフラインキャッシュにいくつかのページ(どのページを決定するか)をキャッシュすることを検討します。(HTML 5オフライン機能)を参照してください。

そうすれば、ページのリロードでも安全であり、メモリを最小限に抑え、必要なものだけをロードします。

PS:ブラウザがすでに持っているものを再発明しようとしないでください:P

于 2012-09-20T19:59:52.553 に答える
0

非同期リクエストをキューに入れ、一度に1つだけ起動する必要があります。

また、すべてを変数に格納しているため、ある時点で(ブラウザ)が大量のメモリを消費する可能性があり、全体が非常に遅くなる可能性があります。キャッシュのサイズを特定のページ数に制限することをお勧めします。

于 2012-09-20T19:42:34.867 に答える
0

フェッチしたコンテンツを保存しないようにすることもできます。フェッチして破棄するだけです。ブラウザは引き続きフェッチされたページと画像を内部ストレージにキャッシュするため、その後の読み込みははるかに高速になります(もちろん、ajaxライブラリがキャッシュを強制的に無効にしない場合、つまりPOSTを使用する場合)

于 2012-09-20T19:46:54.067 に答える