3

次の概念の制限、短所を知りたいです。

要件:

  1. LocalStorage をサポートするブラウザー。
  2. サーバー側の非同期ノンブロッキング I/O テクノロジー。

次のリクエスト フローを想像してみましょう。

  1. クライアント GET / リクエスト -> サーバー. この段階を「あいさつ」と呼びます。これは興味深い段階です。これは、クライアントが送信するためです (もちろん、ヘッダーも送信します)。

    • IP
    • ブラウザ
    • ブラウザ版
    • 言語
    • 文字コード
  2. サーバー -> クライアント(200 OK)

  3. クライアント -> IF OK -> サーバーとの Websocket を確立します

Websocket が確立されると、「アセット ストリーム」の段階に入ります。

  1. サーバー -> 言語、ブラウザー、解像度固有のアセット) に固有の一致するアセット(スタイルシート、画像、javascript ファイル、フォントなど) を探し、websocket を介してそれらをストリーミングします。

  2. サーバー -> リクエスト(websocket、アセットの非同期ストリーム)

利点 1. DNS ルックアップなどを回避するため、ネットワーク経由で複数のリクエストを行う必要はありません。

利点 2.次の段階で、これらのアセットをすべて localStorage にキャッシュします。

  1. request -> LocalStorage キャッシュに入れます。
  2. リクエスト -> Web サイトをレンダリングします。

何が良いのか、何がそうでないのかなど、いくつかの意見を知りたいです。

私の最初の考え:

  • このアーキテクチャでは CDN はサポートされていません
  • WebSocket などを開始するための javascript / html を取得するには、単一のリクエストが必要です。

私の質問が明確だったことを願っています。

4

1 に答える 1

3

興味深いアプローチですが、それは間違いなく検討する価値があります。私をあなたの悪魔の擁護者にしましょう:

利点1.DNSルックアップなどを回避するネットワークを介した複数の要求はありません。

これは真実ですが、ページ/サイトに初めてアクセスするときにのみ問題になります。また、最新のブラウザが実装するプリフェッチによって、ある程度軽減されます。ブラウザは複数のリソースを並行してダウンロードすることを覚えておくことが重要です。これは、ペイロード全体をまとめてダウンロードするよりも高速で、確実に応答性が高くなる可能性があります。

今日のテクノロジーを使用すると、Webクライアントに関する限り、ほんの一握りのリソースで本格的なページとアプリケーションを提供できます(それらはすべてgzipで処理できます!):

  1. HTML
  2. 1つのリソースとして結合および縮小されたCSSファイル
  3. JSも同じ
  4. 画像スプライト

メリット2.これらのアセットをlocalStorageにキャッシュします。

ブラウザはすでにそのような資産から地獄をキャッシュしています!さらに、これらのキャッシュを無効にするための実証済みのインテリジェントな手法があります(これはソフトウェア開発で2番目に大きな課題です)。

考慮すべきその他の事項:

  1. CDNを過小評価しないでください。レイテンシーに関しては、彼らは命の恩人です。あなたのアプローチは、最初のリクエストの間、レイテンシーに優しいものではありません。
  2. AJAXとプログレッシブエンハンスメントのアプローチにより、Webアプリのエクスペリエンスを最適化して、すでにデスクトップアプリのように感じることができます。
  3. すべてのリソースを含む1つのストリームで動作するには、FireBugなどのツールを再発明または変更する必要があります。これらのツールがなければ、今日のWeb開発は想像できません。
  4. ブラウザがこのアプローチをネイティブにサポートしていない場合でも、プログラミングを行って、ストリームに含まれる内容とその処理方法をブラウザに通知するのは非常に時間がかかります。ストリームを処理し、必要なすべてのイベントを(最適な順序で!)発生させるまでに、期待したほど多くのメリットが得られない可能性があります。

幸運を!

于 2012-08-17T06:24:13.873 に答える