Skip to main content

https_get_binary_keepalive

Function https_get_binary_keepalive 

Source
pub fn https_get_binary_keepalive(
    host: &str,
    paths: &[String],
) -> Result<Vec<Option<Vec<u8>>>, &'static str>
Expand description

レスポンスヘッダからContent-Length(10進)を読み取る。無ければNone。 同一ホストの複数パスを 1 本の接続・1 回のハンドシェイクで取得する。

§なぜ要るのか

【2026-08-05 実測】1 ページの読み込みで DNS=67/15 TCP接続=204/14 TLS握手=4118/14ハンドシェイクだけで 4118 tick(約 41 秒)、1 回あたり約 294 tick。 DNS も TCP 接続も軽いので、重いのは TLS 交渉そのもの。 同じホストへ毎回張り直しているのが原因。

§応答の切れ目

keep-alive では接続が閉じないので、どこで 1 応答が終わるかを 自分で決める必要がある。Content-Length を見て、その分だけ読む。 見つからない応答(chunked 等)が来たらそこで打ち切り、 残りは呼び出し元が個別取得へ切り替えられるよう None を返す。

§戻り値

paths と同じ長さ。取れなかったものは None。 途中で接続が壊れたら、それ以降は全部 None(呼び出し元が再取得する)。