如果服务器gzips内容可靠地测试

时间:2017-01-23 08:44:03

标签: apache google-chrome-devtools gzip mod-deflate web-performance

我似乎在测试内容是否通过Apache的mod_deflate gzip进行测试时获得了不同的结果。

我测试了相同的网址,在一台PC上,我在响应标头中有Content-Encoding:gzip,在另一台几乎相同设置的PC上(Windows版本,浏览器版本等) )我没有,页面加载速度更慢,尺寸更大。在这两种情况下都存在请求标头Accept-Encoding:gzip, deflate, lzma, sdch, br

  1. 有人可以推荐一种可靠的方法来测试内容是否被压缩? 我的意思是可靠 - 除了Chrome Dev Tools。
  2. 为什么有些用户可能拥有完整内容,即使他们要求使用gzip压缩文件?它与服务器相关还是与客户端相关?如何确保100%的用户获得gzip压缩内容?

2 个答案:

答案 0 :(得分:2)

有人可以推荐一种可靠的方法来测试内容是否被压缩?我的意思是可靠 - 除了Chrome开发工具。

[答案] - 一种可靠的测试方法是找出从服务器检索到的内容的大小,并与收到的内容长度进行比较。根据这篇文章(content-length when using http compression),内容长度将是压缩内容的大小。

如果内容是文本,则压缩率将为3:1或更高。但是,如果您要发送压缩图像,则会少得多。在任何情况下,如果压缩工作,它将大于1:1。

对于测试设置,您可以托管一组测试数据,如文本文件,apache上的图像,并了解其大小。可能是文件的名称可能是它们的大小,如1024bytes.txt。在客户端,您可以发送检索数据的请求并比较响应头(Content-Length)以检查内容的大小。您可以使用mocha& amp;柴

为什么有些用户可能拥有完整内容,即使他们要求使用gzip压缩文件?它与服务器相关还是与客户端相关?如何确保100%的用户获取gzip压缩内容?

[答案] - 您只能从服务器端确认这一点。会有客户端限制和错误。对于例如https://support.microsoft.com/en-us/help/871205/internet-explorer-may-not-decompress-http-content-when-you-visit-a-web-site。如您所见,Windows错误可能导致压缩失败。这个或类似的错误可能解释了为什么你在不同的机器上看到不同的行为。

我们如何解决这个问题?

您可以将测试设置与可靠的数据提供商进行比较。在您的情况下,您确实通过www.bing.com进行了验证。验证测试设置和客户端是否正常使用可靠来源后,请使用您的apache服务器进行测试并进行认证。

答案 1 :(得分:1)

假设问题是评论中讨论的缓存代理。

有几种选择。

  1. Apache可以向内容添加http标头,以通知缓存不存储内容。将以下内容放入VirtualHost块

    标题设置Cache-Control" private"

    没有承诺上述内容将起作用,它是一个可能被代理忽略的咨询。

  2. 更可靠的方法是使用HTTPS,这可以防止几乎所有代理都读取主机名以外的任何内容,因此它们不可能充当缓存。 SSL证书非常便宜,但您可以先使用自签名证书免费测试。

  3. 有关于创建self signed cert here的说明然后复制VirtualHost块并粘贴一个新的端口,将端口更改为443并添加以下内容:

    <VirtualHost *:443>
    
         .... Existing config
    
         SSLEngine on
         SSLCertificateFile /path/to/your_domain_name.crt
         SSLCertificateKeyFile /path/to/your_private.key
    
    </VirtualHost>
    

    最后一点,我要注意,如果一个组织实施了一个缓存代理。其目的可能是提高其用户的性能。确定技术变更是否能提高最终用户速度的最佳方法是衡量它。 Chrome开发人员工具包括一个网络监视器,其中包括页面加载时间和许多其他有趣的细节。