[Maxthon2技巧]傲遊的防假死技術

本篇精簡自開發人員vinS的「也談防假死」
—–
「假死」、「防假死」是我們在使用瀏覽器的過程中提及次數非常多的兩個詞彙。那麼,到底什麼是「假死」,「防假死」的原理又是什麼呢?今天就讓我們來談談有關「假死」的話題。

首先從概念上來解釋一下。「假死」是個通俗的說法,比較準確的說法是,在網頁載入或者執行的過程中,多種原因造成瀏覽器回應變慢,甚至無法操作的狀態。所以,「假死」並不是一個特定的BUG,僅僅是複雜的網路環境造成的瀏覽器不穩定狀態。

那麼,是什麼原因造成的?我們歸納了以下幾點:
1、網頁原始碼比較複雜:
瀏覽器在處理過程中會佔用大量的CPU使用率和記憶體,因此造成瀏覽器甚至電腦失去反應
2、網頁原始碼有bug:
大量個人網站和品質不良的網站原始碼湧現,造成對瀏覽標準的普遍不支援,瀏覽器渲染引擎在處理這些網頁原始碼的時候會出錯,比如:陷入無線循環…等
3、網頁資料過多:
網頁含有大量需要處理的資料,造成系統繁忙,如多圖頁面,超長頁面…等
4、網頁元件資料過多:
網頁內嵌的各種元賤會導致瀏覽器處理大量資料,造成系統繁忙。如:Flash、ActiveX…等
在以上情況下,如果瀏覽器框架設計未考慮多標籤瀏覽的特殊性,資源分享在瀏覽時未做適當最佳話,就可能會造成整個瀏覽器因為單一頁面的處理反應過慢而變慢。

通常的防假死技術有哪些?各有何優劣呢?
1、多線程技術:
這種技術把網頁放到獨立的線程中執行,如Maxthon2.5.1之前的版本。這種技術會使瀏覽器佔用的系統資源相對較少
2、多程序技術:
IE8、Chrome採用的技術,把頁面放到獨立的程序中執行
以上兩種技術都是通過程序、線程模組來解決,對javascript等原始碼造成的假死效果比較好,但對於Flash等元件造成的假死效果不理想。
線程和程序有何區別?簡而言之,一個程式佔用一個程序,而每個程序中會有多個線程。一個程序中的線程可能會互相影響或影響整個程序,而不同的程序彼此之間就不會有太大影響。

Maxthon2.5.1版本加入了防假死技術,是上面的那一種?
Maxthon2.5.1之前的版本採用的就是多線程技術,把頁面放到獨立的線程中執行。Maxthon2.5.1版本採用頁面分離技術,這種技術透過把頁面和整個瀏覽器的主體頁面分開,來解決假死,能比較好的處理Flash等元件造成的問題。但這種方式比較複雜,造成的很多小問題也不少,需要長期的最佳化。

瀏覽器假死、崩潰、卡死等問題是一個普遍且複雜的問題。針對這樣的情況我們不能指望經由一個技術就可以多快的解決,因而這必然是一個逐步最佳化的過程。隨著網路應用的越來越複雜,新的挑戰一定也會越來越多。比如幾年前不存在影音播放網站,現在就非常的多,這些都給瀏覽器提出了新的挑戰。傲遊會加大研發力度,力求給大家帶來更好的瀏覽體驗。:)

原始文章:http://blog.maxthon.cn/?p=317
——
看完,我只能說…
那…傲遊是用了有別於以上兩種技術的第三種新技術是嗎?
如果Flash處理好了,該不會JavaScript就掛了吧!
距離春節還有幾天
新版本,「不食言」的話就快出了
期待一下吧!