Hugo + Github 部署个人博客
如何利用hugo和github部署个人博客
2024-08-22    
通用(Client/Server 共识) [超时预算] 明确连接/读/写/总超时。给出默认值与误差容限。 [幂等性与重试] 哪些请求允许重试;非幂等请求是否要求 Idempotency-Key/事务号;服务端去重窗口多大。 [代理/网关] 是否有 Nginx/Envoy/Ingress,公布其 keep-alive、空闲回收、最大头部、最大并发、压缩等配置。 [可观测性] 日志必须含:连接标识、错误类型、关闭原因;指标:连接数、重试次数、GOAWAY 计数、错误分布。 [版本协商] 是否 TLS/ALPN(h2/h1.1)、是否 h2c(明文 HTTP/2),对端支持矩阵。 作为 HTTP/2 客户端(调用方)需要明确 [并发流限制] 读取服务器 SETTINGS_MAX_CONCURRENT_STREAMS,并限制并发请求数。 [连接复用策略] 连接空闲 TTL、最大请求数/最大寿命,何时主动丢弃旧连接(防止复用到半关闭连接)。 [保活] 是否发 HTTP/2 PING(或 TCP keepalive),间隔多久,避免中间设备/NAT 回收。 [错误分类与重试] 将 REFUSED_STREAM、对端 GOAWAY 后新流失败、CURLE_HTTP2_STREAM、SEND/RECV_ERROR 等归类为“可重试一次(强制新建连接)”;实现指数退避+抖动;限制最大尝试次数。 [头部与负载上限] 遵守服务端 max_header_list_size 与单请求体大小限制,超限前就地切分或拒绝。 [TLS/ALPN] 与服务端达成是否必须 h2(TLS+ALPN)还是允许 h2c;证书/信任链要求。 作为 HTTP/2 服务端(提供方)需要明确 [连接保活] 公布空闲超时(例如 300s),禁止“响应后立刻 FIN/RST”。 [优雅关停] 滚动升级/缩容时:先发 GOAWAY(合理 last-stream-id),等待 drain 窗口(例如 5–30s),再 FIN。 [自动 GOAWAY 策略] 是否在“连接空闲 N 秒或存活超过 TTL”时主动 GOAWAY;如果在代理层实现,公布代理参数。 [并发与窗口] 设置并公布 MAX_CONCURRENT_STREAMS(≥100 推荐)与头部限制;避免过低导致误判拥塞。 [错误语义] 连接/流级异常用标准 HTTP/2 错误码(如 REFUSED_STREAM)帮助客户端做正确重试。 [压缩与编码] 是否启用 gzip/br;对大响应是否建议数据分块(虽然 H2 多路复用已能缓解 HOL)。 作为 HTTP/1.
0001-01-01