問題背景:
打開瀏覽器之后案疲,打開某網(wǎng)站首頁,在console里輸入
var resources = performance.getEntriesByType("resource")
希望得到頁面內(nèi)所有資源文件的加載時間络拌。
然后將resources打印出來回溺,滿懷信心的從html代碼里跳出一個圖片的url,結(jié)果在打印結(jié)果中找不到遗遵。為什么?
原來這個東西有bufferSize的限制车要。頁面中的資源數(shù)量超過了150,因此performance裝不下了翼岁。
簡單的解決辦法是,在頁面加載的初始階段琅坡,對buffer進(jìn)行擴(kuò)容:
<html><head>
<script>
if ("performance" in window
&& window.performance
&& window.performance.setResourceTimingBufferSize) {
performance.setResourceTimingBufferSize(300);
}
</script>
...
</head>...
如果我們無法控制html文件,就要在注入的腳本伊始售躁,加入上面的代碼坞淮。
另外回窘,為什么有的資源信息在不擴(kuò)容的情況下始終找不到?實(shí)驗(yàn)下來的直觀印象啡直,是performance記錄資源的工具,大概是以隊(duì)列的形式實(shí)現(xiàn)的付枫。也就是先進(jìn)先出。當(dāng)資源在頁面比較靠前時阐滩,這個資源的信息,就被后面的數(shù)據(jù)頂出了數(shù)組......
Paste_Image.png