http-compression - 当Content-Length低于1K时,压缩HTTP响应是没有用的吗?

标签 http-compression content-length

我编写了一个响应低于 1K 的 JSON 内容的 Web 服务。这种压缩策略中哪一种最好?

  • 通过反向代理将此内容压缩为任何其他文本资源?
  • 添加规则以不在阈值以下压缩资源?

我认为互联网上的数据包大小大于 1K(This article 非常有趣,但它给我带来的问题多于答案:579 字节?1518 字节?)。这样,就可以避免花费时间和处理器来压缩已经在 1 个数据包中发送的内容。

因此我更多地关注某人对这两种策略的测试?有人做过测试吗? 而且我对你写的规则也很感兴趣。

谢谢

最佳答案

我下载了此页面的副本(即包含此问题的 HTML 的源代码),并仅保留前 993 个字符。

即原始大小为993个字符。

使用 gzip 压缩方式压缩该文件会生成 595 字节的文件。

这意味着新文件几乎是原始文件的 60%!

结论:是的,它很容易就值(value)约 1KB 的(文本)数据。

将原始大小大约减半至 515 个字符会产生 397 个字符的压缩文件,较新的文件约为原始文件的 77%,虽然不如原始文件好,但仍然具有优势。

将文件再次减半至 223 个字符会产生 277 字节的压缩文件,并且压缩文件现在更大,因此对于非常小的数据包大小,gzip 压缩没有用,尽管仍然可以实现压缩。 (但不能简单地使用 gzip)。

为了让您了解大约 500 字节有多么小,请考虑 google.com 的响应(包括 HTTP header ):

HTTP/1.0 302 Found
Location: http://www.google.com/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Wed, 16 Mar 2011 11:27:29 GMT
Server: sffe
Content-Length: 219
X-XSS-Protection: 1; mode=block

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

包括 header 已经有 465 个字节了! (但是 HTTP header 通常不会被压缩,只有内容......这里是 219 个字符)。

压缩后文件大小为 266(不包括 header ),因此小幅增长不值得担心。

关于http-compression - 当Content-Length低于1K时,压缩HTTP响应是没有用的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5324285/

相关文章:

iis - gzip 压缩和 iis express/iis?

php:如何使用带有输出缓冲压缩的 readfile 正确地提供文件下载

javascript - 在完成加载之前获取 AJAX 响应的大小

PHP SOAP 请求

python - 为 aiohttp 中的静态文件启用 gzip 压缩

ios - 接受编码 : gzip on iOS

ruby-on-rails - 如何使用 Ruby on Rails 3 检查 HTTP 请求的字段 'Content-Length '?

android - HttpPost + setEntity : how to know content-length?

perl - 如何使用 Perl 为 HTTP 请求发送不正确的 Content-Length header ?

ASP.NET MVC - 压缩 + 缓存