上午下載試用了一下Google chrome,讓我眼前一亮的是它的多程式功能。每開啟一個頁面,chrome都會開啟一個新的程式,這可以通過“工作管理員”看出來。這樣的優勢就是各個頁面之間不會互相影響,因此不會出現IE中瀏覽Ajax氾濫的網頁的時候出現的整個瀏覽器假死的情況,極端情況下,當一個頁面中的chrome崩潰的時候其他頁面不會受影響。
我嘗試分析chrome的實現機理,一開始我認為每個頁面就是一個程式視窗,只不過chrome將這些視窗通過SetParent這樣的方式展示到一個父視窗中而已。但是使用Spy++進行探測後我大吃一驚,每個頁面以及主視窗頁面的ProcessId是同一個,也就是顯示介面還是一個程式。因此我猜測chrome只是把每個頁面對應的執行引擎放到單獨的程式了,渲染和互動的介面還是同一個程式。
看來Google chrome還是受限於介面只能是一個程式、執行緒的約束,啥時候作業系統圖形引擎能夠支援每個子Window都可以執行在不同的程式、執行緒中就好了,呵呵。
還沒來得及看chrome的原始碼,所以一切都只是猜想而已。
給chrome來個暴力測試:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
  <head>
    <title>TestMe</title>
    <meta http-equiv=”content-type” content=”text/html; charset=GBK”>
  </head> 
  <body>
   <script>
 function ok()
 {
  while(true)
  {
  }
 }
 </script>
    <button onclick=”javascript:ok()”>ok</button>
  </body>
</html>
上面的HTML頁面在IE、FF中執行都會提示“會消耗系統資源,是否繼續”,一旦繼續瀏覽器就死掉了,其他頁面也無法開啟,而用chrome就沒有這個問題,其他頁面照樣跑的歡。我以前試用一些複雜的網頁遊戲的時候,這些遊戲中使用JavaScript進行的AI運算如果非常耗時,那麼IE就會彈出討厭的“會消耗系統資源,是否繼續”提示,有了chrome就再也不擔心這個問題了,是否意味著以後大量的運算邏輯可放在瀏覽器端了呢?期待!!!