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

时间:2013-09-20 09:19:06

标签: html5 xmlhttprequest bandwidth ie-developer-tools

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

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

1 个答案:

答案 0 :(得分:0)

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

IE F12开发人员工具中的已接收列显示通过网络传输的字节数,包含HTTP标头可能包含或不包含实际请求的资源。例如,如果资源已经位于缓存中,则Content-Length HTTP响应头将列出所请求资源的大小,而F12开发人员工具中的Received列将仅显示HTTP 304响应的字节数报头中。

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

由于您无法访问随机访问者计算机上的开发人员工具,因此您只能“在野外”估算带宽。在这种情况下,您需要花费多长时间通过window.performance.getEntries(),即ResourceTiming下载资源。

要确定在野外为该资源传输了多少字节,您只能猜测。您知道它至少与文件大小一样多,但您只能估计 HTTP标头大小,因为它会因用户/浏览器/代理而异。您还需要确保资源不能位于用户的缓存中,因此您应该使用缓存清除URL参数和/或设置相应的HTTP Cache-Control标头。