如何解决对于状态为ok的http请求,PerformanceResourceTiming.responseStart和PerformanceResourceTiming.requestStart均为0
我想测量HTTP请求的TTFB(到第一个字节的时间)。我已经在Amazon S3服务器上托管了一个0KB的pdf文件,并且正在使用fetch
api来获取它。这是我的代码:
let url = "https://s3-us-west-2.amazonaws.com/speedtest.waveform.com/ping.pdf";
await fetch(url).then(res => res.text());
let perf = performance.getEntriesByName(url).pop();
console.log("ttfb",perf.responseStart - perf.requestStart);
在chrome开发人员网络标签中,我可以看到该请求及其所有计时信息:
但是我无法在PerformanceResourceTiming
文档中访问此信息。实际上,包括requestStart
和responseStart
在内的许多属性都未设置。将perf
记录打印到控制台显示:
这很奇怪,因为使用此url做同样的事情很正常:"https://speed.cloudflare.com/__down?bytes=0"
解决方法
这是因为s3服务器未设置timing-allow-origin头。 Cloudflare确实设置了该选项,这就是为什么我能够读取ttfb
值的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。