HTTP/2
HTTP/2 は HTTP 1.1 プロトコルの進化版であり、基本的にネットワーク使用をより効率的にしようとするものです。セマンティクスは同じであり、旧プロトコルとの互換性を持つように設計されています。
HTTP 1.1 Limitations
HTTP 1.1は1接続あたり1リクエストの処理に制限されているため、通常
クライアントはサーバーからファイルをリクエストするために複数の接続を使用します。しかし
これは問題を引き起こします。オープンなTCP接続が多すぎると、
サーバーリソースを使用するためのクライアント間の競合が発生し、より多くのクライアントがサーバーに接続するにつれてパフォーマンスが
どんどん低下するからです。
主な機能
- HTTP/2 はバイナリプロトコルです(HTTP 1.1 はテキストプロトコルであることを思い出してください)。
- HTTP/2 は TLS と ALPN を使用して動作します。
- 多重化されています(単一の TCP 接続で複数のリクエストを送信できます)。
- サーバーはクライアントにレスポンスをプッシュできます。
- ラウンドトリップタイムを削減し、クライアントが
より速く読み込めるようにします。
HTTP/2 には他の改善点もあります。詳細:RFC7540。
HTTP/2 は ALPN プロトコルが必要なため、カスタム Indy バージョンが必要です。
コンポーネント
- TsgcHTTP2Client: HTTP/2 プロトコルを完全にサポートするクライアントコンポーネント(sgcWebSockets 100% Pascal コード、外部ライブラリなし)。
- TsgcWebSocketHTTPServer: HTTP/2 プロトコルを完全にサポートするサーバーコンポーネントです(sgcWebSockets 100% Pascal コード、外部ライブラリなし)。デフォルトでは HTTP/2 は無効になっており、HTTPOptions プロパティを使用して Enable = true を設定することで有効にできます。
- TsgcWebSocketServer_HTTPAPI:
HTTP/2 プロトコルをサポートするサーバーコンポーネント(Microsoft 実装で Windows 2016 以降または Windows 10 以降が必要)。
- DataSnap
サーバー: DataSnap サーバーも HTTP/2 プロトコルをサポートできます。
API