代码之家  ›  专栏  ›  技术社区  ›  Mandar Katre

IE开发人员工具显示的接收字节与Content-Length响应标头不一致

  •  0
  • Mandar Katre  · 技术社区  · 11 年前

    我正在使用禁用缓存的XmlHttpRequest使用GET请求下载图像。在IE10中,当我检查网络面板时,我看到Received列显示不同的字节数,内容长度标头显示正确的图像大小。每当我多次刷新页面时,我都会看到Received列总是显示不同的字节数据。

    我需要图像的大小以及下载带宽计算所需的时间。对于所花费的时间,我从HTML5的performance.getEntries()中获取图像条目,并检查持续时间。但对于图像大小,我应该参考网络面板中显示的内容长度标题或接收的字节吗?

    1 回复  |  直到 11 年前
        1
  •  0
  •   Sotirios Delimanolis    11 年前

    这个 Content-Length HTTP响应头告诉浏览器请求的资源有多少字节。在您的情况下,它应该等于磁盘上图像的大小。

    IE F12开发工具中的Received列显示了通过导线传输的字节数,这将 包括HTTP标头 可以也可以不 包括实际请求的资源。例如,如果资源已经位于缓存中,则 内容长度 HTTP响应标头将列出请求的资源大小,而F12开发人员工具中的Received列将仅显示HTTP 304响应标头的字节数。

    对于带宽计算,在您的开发机器上,您应该使用Received列来计算每个间隔发送的字节数。

    您将只能“在野外”估计带宽,因为您无法访问随机访问者机器上的开发工具。在这种情况下,您将计算通过下载资源所需的时间 window.performance.getEntries() 又称作 ResourceTiming .

    要确定该资源在野外传输了多少字节,您只能猜测。你知道它的字节数至少和文件大小一样多,但你只能 估计 HTTP报头大小,因为它将根据每个用户/浏览器/代理而变化。您还需要确保资源不能在用户的缓存中,因此应该使用缓存破坏URL参数和/或设置适当的HTTP Cache-Control 标题。