0

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

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

4

1 回答 1

0

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

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

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

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

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

于 2014-01-20T21:06:31.573 回答