什么是最小的http和https数据请求

alp*_*der 10 https http

让我说我想使用http协议从服务器获取一个字节,我想最小化一切,没有标题只是http://myserver.com/b其中b是一个文本文件,其中包含一个字符,或者更好b只是一个字符(不确定是否可能).有没有办法用apache执行此操作,完整的http和完整的https事务所需的最小数据量是多少?或者,如果数据效率更高,则可以仅使用头部请求来完成事务.

Bru*_*uno 6

如果您计划使用HTTP/1.1(如果您最终使用虚拟主机,GET则需要更多或更少),您的请求将需要具有主机名,可以在Host标头中,也可以作为请求行中的绝对URI(请参阅RFC 2616第5.1.2节).

您的响应还需要一个Content-Length转移编码标头和分隔符.

如果您愿意通过使用HEAD请求"中断"HTTP ,听起来HTTP可能不是协议的最佳选择.您也可以在自定义标头中返回一些内容,但这并不是一种干净的方式.

请注意,即使您实现自己的协议,您也需要实现类似于什么Content-Length或分块编码提供的机制,以便能够确定何时停止从远程方读取(否则,您将无法检测到严重关闭的连接).

编辑:

这是一个快速示例,具体取决于您的主机名(假设HTTP 1.1).我猜你可以用OPTIONS.这取决于你愿意打破多少HTTP ...

请求:

GET / HTTP/1.1
Host: www.example.com
Run Code Online (Sandbox Code Playgroud)

这是14 + 2 + 21 + 2 + 2 = 41字节(CRLF为2)

响应:

HTTP/1.1 200 OK
Content-Length: 1
Content-Type: text/plain

a
Run Code Online (Sandbox Code Playgroud)

这是15 + 2 + 17 + 2 + 24 + 2 + 2 + 1 = 65字节

对于HTTPS,SSL/TLS通道本身会有很小的开销,但是大部分都将由握手获取,特别是服务器证书(假设您没有使用客户端证书身份验证)应该是最大.检查证书的大小(DER格式).


Tho*_*ana 4

你究竟想要实现什么目标,这是一种保持活力吗?

您可以执行“GET /”,这意味着正在使用 HTTP/1.0,但这会阻止您使用虚拟主机等内容。您可以将“/”映射到 cgi 脚本,它不需要是真实的文件,具体取决于您想要实现的目标。您可以将 Apache 配置为仅返回最小的标头集,这基本上是“Content-Type: text/plain”(或其他更短的 mime 类型,可能是自定义 mimetype,例如“Content-Type: a/b”)和“ Content-Length: 0”,因此根本不返回响应正文。

  • @alphablender 也许你应该使用 HTTP 以外的东西。您可以轻松编写如下所示的 TCP 协议:(1) 客户端连接,(2) 立即发送最低限度的有效负载,(3) 断开连接。这就是它所得到的最斯巴达式的。 (5认同)