解决performance.getEntriesByType("resource")只能获取到150条请求的问题

很久很久没更新博客了,今天来篇短文。

前几天遇到一个问题,之前搞过一个Chrome插件,用来给QA检测页面的一些规范性问题,里面有个功能是检测页面的请求数和加载时间,用来提示前端关注页面性能优化。

而页面请求数我是通过

window.performance.getEntriesByType("resource")

但是发现在页面请求数超过150个后,获取到的请求数就永远是150条,不准确了。

查了一下文档,原来浏览器默认情况下最大缓存150条的,

而w3.org上提到了另一个方法可以解决这个问题:

The recommended minimum number of PerformanceResourceTiming objects is 150, though this may be changed by the user agent. setResourceTimingBufferSize can be called to request a change to this limit.(原文--》

所以解决方案:

function set_resource_timing_buffer_size(n) {
  if (performance === undefined) {
    console.log("= performance.setResourceTimingBufferSize(): peformance NOT supported");
    return;
  }
  // Check if Performance.setResourceTimingBufferSize() is supported 
  console.log ("= performance.setResourceTimingBufferSize()");
  var supported = typeof performance.setResourceTimingBufferSize == "function";
  if (supported) {
    console.log("... Performance.setResourceTimingBufferSize() = supported");
    performance.setResourceTimingBufferSize(n);
  } else {
    console.log("... Performance.setResourceTimingBufferSize() = NOT supported");
  }
}
//调用(规定不能少于150)
set_resource_timing_buffer_size(300);

MSDN文档参考》》


本文由 w3cmark_前端笔记 版权所有,转载时请注明出处。
注明出处格式:w3cmark (http://www.w3cmark.com/2017/567.html)

分享到:

关注w3cmark
微信公众号 w3cmark_com