2015-06-25 24 views
0

在以前版本的Chrome瀏覽器,網頁上有以下幾點:如何停止下載不需要的資源?

<script> 
    document.write('<plaintext>'); 
</script> 

<img src="http://example.com/image.jpg"> 

圖像不會被下載。在某些時候,Chrome更新改變了這種行爲。現在,當我查看網絡選項卡時,我看到圖像已下載。 (小提琴在這裏:https://jsfiddle.net/doojunqx/

我有一個腳本是在一個頁面上,我想使用這個腳本停止瀏覽器下載(使用網絡帶寬)的圖像和其他資產是不需要的,並在我的下面腳本標記。

Mobify做類似的東西在這裏: http://cdn.mobify.com/mobifyjs/examples/capturing-grumpycat/index.html

當他們在頁面上說:「打開你的Web檢查,並注意原IMGS沒有加載。」但是,當我打開Chrome開發人員工具並查看網絡選項卡時,我看到原始圖像正在加載。我不確定Chrome的哪個版本改變了這一點,但我認爲這是最近一兩個月內。

有沒有辦法強制鉻回到舊的行爲?或者以其他方式阻止這些不需要的資源加載?

感謝,

+0

看起來問題是預加載掃描器。在以前版本的chrome中,如果頭部有渲染阻止腳本,則預加載掃描程序將停止。 有什麼辦法可以禁用預加載掃描器嗎? – MCM

回答

1

大問題,你是正確的,這是a recent change in Chromium受影響的明文標籤的行爲。在直到幷包括版本42. *的版本中,HTML文檔解析器不會生成異步解析線程,直到在原始HTML文檔中找到外部資源。一旦找到這樣的資源,會產生一個異步線程,積極地下載HTML中的所有資源引用。

最近的更改通過將所有文檔解析移動到現在自動啓動的異步線程來簡化了解析行爲。而之前使用純文本標記將確保如果在第一個外部資源之前插入資源,則不會加載任何資源,因爲資源將下載到明文標記在主HTML文檔中執行的那一刻,純文本標記現在變得非常活潑。由於腳本執行有時間延遲,因此將檢索未知數量的資源。

目前還沒有解決這種新行爲的方法,也沒有辦法根據需要禁用預加載掃描程序。您將需要依靠諸如polyfills之類的解決方案來控制資源下載。這種新行爲僅出現在所有版本的Chrome> = 43. *中,並且尚未在Safari,Firefox或其他瀏覽器中實現。

+0

感謝您的解釋丹。 您是否有任何polyfills記住控制資源下載? – MCM

+0

控制資源下載的最簡單方法是實際上只使用非標準屬性,如'x-src'而不是'src'。只需在JavaScript中進行測試,即可決定要下載哪些資源,並在適當的資源上將屬性切換回「src」。 –