首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用curl比较启用了deflate和不使用deflate的页面大小

如何使用curl比较启用了deflate和不使用deflate的页面大小
EN

Stack Overflow用户
提问于 2012-02-08 16:57:21
回答 2查看 38K关注 0票数 50

我有启用了mod_deflate的apache。我想找出在启用和不启用mod_deflate的情况下页面的大小,并比较大小方面的性能。在curl中,我似乎向服务器请求使用--compressed压缩的内容并发送正常的内容,但似乎找不到该页面的大小。你知道怎么做吗?

curl --head http://site

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Wed, 08 Feb 2012 08:48:04 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.12
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=ce39b051a9cd493cbe4a86056e11d61f; path=/
Vary: Accept-Encoding
Content-Type: text/html

curl --head --compressed http://site

代码语言:javascript
复制
HTTP/1.1 200 OK
Date: Wed, 08 Feb 2012 08:48:19 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.12
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=513b8ac5818fd043471c8aac44355898; path=/
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Content-Type: text/html
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-09 02:37:35

我认为获取大小的唯一可靠方法是实际下载文件。但是,curl为仅输出感兴趣的数据提供了一个非常方便的选项

代码语言:javascript
复制
-w/--write-out <format>
    Defines what to display on stdout after a completed and successful operation.

[...]

size_download  The total amount of bytes that were downloaded.

这意味着你可以这样做:

代码语言:javascript
复制
curl -so /dev/null http://www.whatsmyip.org/http-compression-test/ -w '%{size_download}'

输出:

代码语言:javascript
复制
8437

并获得压缩后的大小:

代码语言:javascript
复制
curl --compressed -so /dev/null http://www.whatsmyip.org/http-compression-test/ -w '%{size_download}'

输出:

代码语言:javascript
复制
3225

在此之后,您的比较应该是微不足道的。

票数 94
EN

Stack Overflow用户

发布于 2017-11-27 18:29:58

复制/粘贴准备就绪,用户可读

以下是基于@flesk answeron this的脚本的人类可读版本:

代码语言:javascript
复制
#!/usr/bin/env bash
set -e

bytesToHuman() {
    b=${1:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)
    while ((b > 1024)); do
        d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
        b=$((b / 1024))
        let s++
    done
    echo "$b$d ${S[$s]}"
}

compare() {
  echo "URI: ${1}"

  SIZE=$(curl -so /dev/null "${1}" -w '%{size_download}')
  SIZE_HUMAN=$(bytesToHuman "$SIZE")
  echo "Uncompressed size : $SIZE_HUMAN"

  SIZE=$(curl --compressed -so /dev/null "${1}" -w '%{size_download}')
  SIZE_HUMAN=$(bytesToHuman "$SIZE")
  echo "Compressed size   : $SIZE_HUMAN"
}

compare https://stackoverflow.com/q/9190190/1480391

输出:

代码语言:javascript
复制
URI: https://stackoverflow.com/q/9190190/1480391
Uncompressed size : 106.69 KiB
Compressed size   : 24.47 KiB
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9190190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档