從閱讀來看,似乎是異步加載Google Analytics主要是一種加速瀏覽器的策略,可在加載JavaScript(如IE6和IE7)時加速阻止。在並行加載JavaScript的較新瀏覽器中,通常更好地處理JavaScript,似乎好處會減少。在「現代」瀏覽器上異步加載Google Analytics還有好處嗎?
如果我們只考慮「更新的瀏覽器」(比如IE8 +和1 - 2年前的Firefox和Chrome版本),使用異步加載腳本仍然有很多優勢嗎?如果是這樣,他們是什麼?
從閱讀來看,似乎是異步加載Google Analytics主要是一種加速瀏覽器的策略,可在加載JavaScript(如IE6和IE7)時加速阻止。在並行加載JavaScript的較新瀏覽器中,通常更好地處理JavaScript,似乎好處會減少。在「現代」瀏覽器上異步加載Google Analytics還有好處嗎?
如果我們只考慮「更新的瀏覽器」(比如IE8 +和1 - 2年前的Firefox和Chrome版本),使用異步加載腳本仍然有很多優勢嗎?如果是這樣,他們是什麼?
即使已經提高並行加載和其他的東西在性能方面,仍然存在,他們必須遵守兩個規則的現代瀏覽器,以迫使他們當你使用一個簡單的腳本標籤做出一些犧牲:
腳本標記可能會改變dom「in place」。如果您的js有一個document.write()
調用,它必須發生在腳本標記的任何位置,而不是在執行代碼時瀏覽器可能處於加載狀態的位置,並且瀏覽器無法知道您是否正在執行此操作它有實際的js文件。
腳本標籤上的defer
屬性可以讓瀏覽器知道您的腳本不會包含任何此類dom修改調用,它可以安全地繼續加載其他所有東西,並在其獲取它時運行javascript。
腳本標記必須按順序處理。如果您包含兩個腳本(例如,Google Analytics和Facebook),則在第一個腳本運行之前,您的瀏覽器不允許運行第二個腳本。換句話說,如果您使用的第三方服務之一緩慢下來,您的整個頁面正在等待它。
async
屬性與defer
(「我保證我不會試圖改變dom的位置」)具有相同的效果,但它也告訴瀏覽器腳本標記不必在運行之前運行跟着它,瀏覽器可以隨時隨地運行它。
因此,在這個例子中,如果腳本異步加載,它會告訴瀏覽器,如果它在分析之前獲取了facebook js文件,它可以立即運行而不用等待。
收益較少。不知道IE8是否酷酷,可能是同步......還有其他因素。如果ga網址查詢/響應速度慢,則document.ready()將被延遲。另外,異步允許GA腳本在到達時執行而不是按順序執行。雖然它可能被並行取出,但如果編碼是天真的,它仍然是在系列中執行的,當它不需要時。 – dandavis