close
不只是下載回來按兩下,看懂Google Chrome的原理、概念才是王道。

    歡迎來到電腦王正音班,請跟我念一次,Google「酷龍」(Chrome),字尾E不發音,請不要再念成「谷歌恐龍妹」了,謝謝。

    Google終於推出自己的瀏覽器Google Chrome了,當筆者看到正式宣佈的消息時,心中其實混雜了驚訝與「老子我早就知道了」的矛盾心情,因為Google要出瀏覽器的謠言實在傳太久,久到連最無聊的部落客都懶得再提,就跟尼斯湖水怪或喜馬拉雅山雪怪一樣,大家都聽過,報紙都寫過,但你就是沒看過。即使傳言許久,可是當筆者安裝Google Chrome時還是有一點不真實感,「不會吧?真的出了耶!」,就是這種感覺。

在Google Chrome的官方網站裡有一個用漫畫呈現的技術「文件」,強烈推薦一看。為什麼要做瀏覽器

    大家也許會問:為什麼Google要出瀏覽器?但更恰當的問題是:「為什麼拖到這個時候才出?」,Google有一萬個絕佳理由做瀏覽器(電腦王編輯部願意在PCADV blog上一一列出,甘溫!),最簡單的,Google的所有服務都是建立在網頁上,透過瀏覽器讓人存取使用。當然還是有其他的理由,這篇就讓我們深入研究一下Google Chrome,它是如此的特別,文章主角將會放在Google Chrome在技術與使用介面上的突破。

    相信電腦王各位讀者都有用過IE、Firefox、甚至Opera,搞不好還有Safari或Konqueror,用過Google Chrome一陣子讓你有什麼感覺?就筆者自己來說,Google真的是把瀏覽器當作業系統,簡化介面、多重程序、有工作管理員和記憶體監控、應用程式模式、離線使用網頁程式等等,Google Chrome幫找到瀏覽器一個全新的出發點。

    ●砍掉重練的介面

    十幾年前WWW剛發明時,它是一個方便嵌入圖文、可隨意跳躍連結的網路文件,但現在呢?你在WWW上和人妻聊天、裝小白寫業代文、聽盜版音樂、編輯私密照片、看YouTube影片(甚至編輯影片)、買情趣用品、被詐騙轉帳、看diggirl美女圖、搶標交易……。WWW早就已經不是文件了,可是現在三國鼎立的瀏覽器都有長久的歷史包袱,十幾年來,瀏覽器的功能和核心越來越複雜,但介面其實和最初發明時沒什麼大改,當然圖示變美觀了,但基本的概念並沒有變。

    從Netscape浴火重生的Firefox,試著「把不必要的東西一一拿掉」,但Google Chrome則反向操作,它明顯是全部砍掉重練,為什麼要獨立的搜尋輸入格?為什麼要書籤或歷史選單?等等,為什麼需要選單?「先把所有東西通通拿掉,再把必要的加回去」,於是Google設計了一個極簡化的介面,就跟它們的首頁一樣。

    幾乎沒有Chrome的Google Chrome

    Google Chrome的主介面沒有那些「檔案」、「檢視」選單,視窗邊框下面就是tab,由tab來主導每個網頁的位址與控制(上一頁、下一頁等等),tab放在最上層的主導形式類似Opera,而跟Firefox/IE不同。控制按鈕也只剩上、下一頁、重新載入而已,停止按鈕和網址輸入格結合,而「首頁」按鈕則直接取消,讓「新分頁」帶有首頁功能。唯二的選單按鈕,一個是「文件」、另一個是「設定」相關,再加上個預設隱藏的書籤列,Google Chrome的介面就沒了。

    在瀏覽器裡,「Chrome」是指程式的介面、按鈕等元件,Google Chrome取了這樣的名字大概是在調侃自己,因為它是一個幾乎沒有「Chrome」的瀏覽器。Google的用意很簡單,網頁才是重點,瀏覽器只是一個媒介,這個媒介應該是干擾越少越好。如果把網頁想成應用程式,那瀏覽器就是作業系統的桌面,它只需要具備最基本的介面,因為應用程式才是重點,而事實上,Google的確把現在的網頁當成應用程式來看。

狀態列只有在載入資料時會出現,平常看不到。
如果把Google Chrome放到最大,那視窗邊框都快消失了,只剩下一個個網頁tab。

    多功能網址格Omnibox

    過去的網址輸入格很簡單,它就是讓你手動輸入網址,附帶自動列出之前逛過的網址,但後面這功能其實是雞肋,因為「之前逛過的網址」通常是長長一大串,就算列出來你也不知道它的內容是什麼鬼。Opera是第一個把網址列功能擴增的瀏覽器,它可以設定搜尋引擎捷徑,比如「g PCADV」就是用Google搜尋PCADV,另外在輸入格裡還可做全文搜尋,只要輸入某個字串,Opera會找出之前逛過的網頁內容有那個字串的網址,相當驚人,不過建起來的index檔案很大(數百MB等級),初期這功能還在Beta時還常會因為比對字串而當機。

在Omnibox旁的星星點一下,就可以把網頁加進Bookmark。
在Omnibox打入字串,Google Chrome會自動連上Google搜尋,回饋搜尋建議。

    預知你想逛的網站

    Google Chrome把輸入格叫「Omnibox」,「omni-」字首代表全知全能的意思。在Omnibox輸入一個字串,Google Chrome會列出之前你逛過的網址,或是全文搜尋功能,可跳到「記錄」頁面列出之前逛過的網頁中,帶有這個字串的網頁並附帶抓圖;最強的是透過Google Suggestion功能給你幾個你沒逛過,但可能是你想逛的網站,沒錯,在Omnibox裡你可以找到之前「沒」去過的網站。

Google Chrome的新分頁會列出九個最常去的網站。
瀏覽歷史紀錄很像功能更強的Google搜尋,可網頁全文搜尋還附帶縮圖。

    再也沒有空白頁

    Google Chrome的「新增分頁」借了Opera的創意,但延伸更多新花樣,在IE或Firefox,新增分頁就是一個空白頁,等著你輸入網址或從書籤裡選擇,但為什麼要多這一步?何不讓瀏覽器先猜猜你想去哪裡?

    當你開一個新分頁時,代表你想去某個網站,並且有很大的機會去某個你之前常去的網站,因此Google Chrome自動幫你列出來九個之前常去的站。

    新分頁裡還有搜尋功能,這是全文搜尋過去的網頁紀錄,可以直接搜尋網頁的內容,不是只有標題或網址而已。因此當你開一個新分頁,上頭有Omnibox讓開始搜尋新站,下面則有舊紀錄的整理,難怪Google Chrome預設隱藏書籤列,因為實際用一陣之後,書籤在Google Chrome中真的不那麼重要了。

    自動抓取搜尋引擎

    筆者覺得Omnibox最方便的功能是自動抓取搜尋引擎,只要你在某個網站做過搜尋,比如Wikipedia,Google Chrome就會自動把Wikipedia的搜尋設為捷徑,不必做任何設定,下次只要打w再按Tab,Omnibox就會自動變成「搜尋Wikipedia.org」,再打入你想搜尋的字串就跳過去了,超級方便,不用像Opera或Firefox extension還得設定連結字串。就算兩個網站的字頭相同,比如Gamespot和gamer.com.tw,也只要打到兩者不一樣的部分就可以變換搜尋,比如打g按Tab是找Gamespot,打gamer再打Tab就是找巴哈姆特了。

只要用Wikipedia搜尋過一次,Google Chrome就自動加入,下次只要打w再按Tab,就會自動切成搜尋Wikipedia。
在設定下可以管理搜尋引擎和它的關鍵字,由於Omnibox有自動補完的功能,除非遇到有類似的字串,不然只要打關鍵字的第一個字母就夠了。

    網址列就是瀏覽的起點

    而Google搜尋是不會被建立成捷徑的,因為只要在輸入列打字串,而不選擇任何建議直接按Enter,預設就是去搜尋Google(或其他設定好的預設搜尋引擎)。Omnibox的功能既直覺又強大,因為當你使用網址列而不是用儲存好的書籤時,就代表你想去某個網站、但可能不完全確定那個網站在哪,Omnibox則輔助你找到你想要去的站,透過全文搜尋、瀏覽紀錄、甚至自動連結Google列出網站建議,網址列不再只是輸入網址,而是搜尋的起點。

    ●多重程序架構與Tab

    就像前面所說的,Google Chrome是由tab來主導網頁,Google的想法是讓每個tab都成為獨立的環境,現在網頁不只是文件,很多幾乎已經變成應用程式(比如Google Docs或Flickr的編輯圖片功能),要穩定迅速的執行這些新式網頁,瀏覽器也必須改變方式,就像作業系統一樣,把網頁當成應用程式來看待,因此Google Chrome導入多重程序(multiprocess)的架構。簡單的說,你在Google Chrome看到的tab,在工作管理員裡都是一個獨立的程序(process)。

    傳統tab式的瀏覽器為了節省資源,整個瀏覽器只用一個程序,所有tab都在那個單一程序裡爭取CPU時間,有時單一tab載入過久或是掛掉,就會造成整個瀏覽器當機;這也會衍生安全系的問題,瀏覽器「一定」會有bug,再堅固的防護都可能會出事,如果整個瀏覽器只用一個程序,而某個網站搞鬼的話,整個瀏覽器就破了。

圖取自Google Chrome的漫畫技術文件,在Google Chrome裡,每個tab都作業系統裡獨立的一個程序。

    多個程序平行處理

    作業系統怎麼看待應用程式,Google Chrome就怎麼看待網頁,很多新網頁是功能性的,當然也要像應用程式一樣平行處理。在Google Chrome裡,有三種東西會產生程序,介面會獨立成一個程序出來,避免網頁把Google Chrome主體搞掛,然後每個tab和plug-in都會再產生程序,避免彼此互相搞掛,單一tab掛掉,其他tab或整個瀏覽器還是正常的。同時這也能加快運作速度,因為在作業系統裡多一個程序,就等於能善用多核心CPU的運算時間,嘿嘿,Google Chrome是支援多核心的!現在網頁的元素很複雜,對Google Chrome來說,操作介面、網頁內容(HTML、JavaScript、CSS、圖片)和plug-in(Flash)是完全分開處理的,這能有效加快網頁的處理速度。

    Chrome自備工作管理員

    好玩的是,由於Google Chrome採用多重程序,所以Google Chrome有自己的「工作管理員」可查看所有程序,看每個網頁或plug-in吃掉多少CPU佔用率與記憶體,或是單獨關閉某個程序(除了介面程序不能關,可能怕關了之後CPU還在處理網頁,但卻無法顯示?),系統監控狂一定超愛這功能。

    如果仔細研究這個工作管理員,就會發現Google Chrome對於程序的產生並不單純,各個plug-in會單獨佔用一個程序,但tab並不完全是,如果你在你某個tab裡點一個連結開另一個tab,則兩個tab會共用一個程序,關閉時也會一起關閉。由於程序開太多對作業系統也是負擔,Google Chrome這共用的設計應該是為了減少程序產生,另外,這種共用tab的情況通常也是兩個站之間或多多少有點關連,可以共用一些資料。

    基本上這種多重程序的架構和IE6那種每開一個視窗就多一個explorer.exe的情況不同,IE6是單一程序的程式開好幾個,但Google Chrome則是讓介面、網頁、Plug-in各自分離,或許在工作管理員裡面看有點像,但安全性、介面和速度都差很多。有趣的是,像Google Chrome這種設計的,其實IE8 Beta也採用幾乎一模一樣的作法,只是並沒有分離plug-in,而是整個網頁tab算一個程序。

由於Google Chrome是多重程序架構,因此Google可以在瀏覽器裡加入自己的工作管理員。注意漫畫文件講的並不很詳細,其實如果tab是從另一個tab連結出去,他們會共用一個程序,要關閉程序也得一起關。
多重程序的好處是如果一個tab掛掉,其他tab或瀏覽器本身不會被影響。
Flash之類的plug-in在Google Chrome也是獨立程序,不會因為plug-in而搞掛瀏覽器。

    Greenborder的Sandbox技術

    2007年時,Google買下Greenborder公司,它們的技術是把IE或Firefox瀏覽網頁的動作隔離,讓網頁不會影響作業系統(安裝惡意程式,或從瀏覽器漏洞來存取資料),當時Google每兩個星期就買一家公司,大家一致認為Google買Greenborder是為了做防毒或系統安全的軟體,但其實Greenborder是要來負責寫Google Chrome的tab安全性。

    Google Chrome的tab不僅是獨立的程序,而且採用和作業系統不同的權限模式,每一個網頁程序都被關在sandbox的虛擬機器界線內,這個sandbox無法讀取或寫入硬碟資料,也無法存取其他程序,這可以避免網頁程式偷取硬碟裡或其他tab裡的敏感資料。

在Google Chrome裡,tab程序是跑在最低的權限,無法存取硬碟或其他tab,這可確保安全性。

    流暢的Tab操作

    綜合以上,Google Chrome採用多重程序的架構不只是為了速度、也為了安全性,但這些通常不容易感受到,使用起來,Google Chrome的反應速度的確比較快,至於安全或穩定,我們只能相信Google Chrome的新技術真的有保障,因為這種技術就是要讓你感受不到有問題。

    因為Google Chrome每個tab都是獨立的程序,而且tab和介面的程序也是分開的,所以tab能夠很快速的拉出來成為一個新視窗,或塞回去和其他tab一起排列,這功能使起來非常流暢,也有好看的動畫和特效。

Google Chrome的tab可以隨意拉出來變成新視窗,或是再拉回去和其他tab並排。
Google Chrome對於彈出視窗的的處理蠻特別的,會把popup縮成角落的一個視窗標題,想看的話再點一下,或是直接關掉也行。

    使用模式與引擎核心

    Google Chrome採用多重程序還有一個主要原因,它們認為許多網頁真的已經變成應用程式了,在Google Chrome的選單裡有個「建立應用程式捷徑」可讓使用者把網頁當成軟體來用,選了這功能之後Google Chrome會在桌面上建立一個網頁捷徑,「執行」時就看不到Google Chrome原本就很精簡的介面,視窗只剩網頁的內容。

    當然,如果只是把控制按鈕拿掉而已,那這功能就跟Mozilla Prism一樣平平無奇了,這功能要和Google Gears一起搭配才真正發揮100%實力!

    Google Gears讓網頁離線

    Google Gears是一個JavaScript寫成的開放API,它可讓瀏覽器「離線」執行網頁的JavaScript程式並瀏覽內容,等到上線時再和原網頁同步資料。但要使用Google Gears的功能,IE/Firefox/Safari都要安裝一個外掛,加上支援這功能的網站也不多,所以Google Gears並不普及。不過Google很清楚,若要讓Google Gears成為業界標準,一定要有一套瀏覽器預設支援它,魚幫水、水幫魚。因此Google Chrome成為第一套內建Google Gears的瀏覽器,藉由好用的Google Chrome幫Google Gears抬轎。

    當你用Google Chrome瀏覽Google Reader、Google Docs或Remember The Milk時,按下上方Offline圖示,Google Reader/Docs可以變成離線模式,你可以離線看RSS新聞、編輯文件、建立或完成待辦事項,等到上線時再同步回原網頁。加上前面所提的「建立應用程式捷徑」,Google Chrome真的可以變成應用程式的執行介面,現在有些網站的功能幾乎跟桌面軟體差不多了,比如Picnik的圖片編輯,若能離線執行就代表「應用程式」可以輕易做到免安裝、跨平台、高效能。

    不過微軟有IE+Silverlight、Adobe有Apollo(正式名稱為AIR,以Flash為基礎),都是和Google Gears競爭的類似技術,雖然Google Gears是唯一開放原始碼的,但成為業界標準與否牽涉諸多因素,至少Google認真的要與微軟競爭,而有競爭就會帶動進步。

如果網站有支援Google Gears,連上時就會自動跳出訊息是否要安裝。
安裝之後可以在桌面上建立捷徑。
之後點選桌面捷徑就可以離線使用網站的功能,上線時再和網站同步。
其實所有的網站都可以用「建立應用程式捷徑」讓它看起來像桌面上的程式,只是若不支援Google Gears,就只能上線時使用。

    Incognito 隱士模式

    大家多少都遇過這樣的情況,別人到你的電腦上借用一下瀏覽器,登入某些網站但卻忘了登出,等到你用的時候,就發現Yahoo是用朋友的帳號登入,當然,電腦王讀者跟筆者一樣絕對都是世所僅見的好人,不會拿朋友的帳號來下標、或偷看別人的信,但難保不會有壞蛋藉機搞怪。因此在新一代的瀏覽器都加入了隱形模式,Google Chrome稱為Incognito mode無痕模式。

    在Google Chrome選單中選「新增無痕式視窗」,會跳出一個帶帽隱士的圖示,接下來你在這個視窗所做的動作都不會被紀錄,包括帳號、瀏覽歷史、輸入的資料等等,關閉視窗的同時就全部刪除,適合臨時給別人、或到別人電腦上使用。IE8 Beta與Firefox 3.1 Beta也都陸續加入類似功能,各自稱為inPrivat和Private Browsing,筆者通稱為「色情網站模式」,開了就能放心逛色情站不留下記錄。

Google Chrome的無痕視窗,會有一個帶帽隱士的小圖示,在這個視窗的所有動作都不會被紀錄。

    Webkit & V8 JavaScript Engine

    最後我們聊聊Google Chrome的核心,Webkit排版引擎和V8柴油引擎……啊不是,是V8 JavaScript引擎。一般來說,瀏覽器的排版引擎就是把網頁的所有元素,圖文、CSS、HTML碼、JavaScript等等,全部兜起來的核心,是決定瀏覽器秀出網頁的速度的最重要因素。

    大家應該多少都聽過幾個瀏覽器的排版引擎,IE用的Trident VI、Firefox的Gecko或Opera的Presto,其中KHTML是比較少見的,因為它有好一段時間沒有Windows版,使用KHTML的之前只有Unix下的Konqueror和Mac OS X下的Safari,直到Safari移植到Windows上。嚴格來說Safari用的是Webkit,這是Apple改良KHTML所做的引擎並且開放原始碼。Google的手機平台Android就選用Webkit,因為Webkit效率高、佔用資源低。

    不過Google Chrome只拿了Webkit的HTML排版部分,JavaScript處理則是Google重新開發的V8引擎。Google認為JavaScript已經成為新式網頁不成文的語言標準,早期只是換換圖片的簡單程式碼,但現在像Gmail這種整個幾乎由JavaScript構成的網頁越來越多,如果要讓網頁成為應用程式,那便需要全新的JavaScript引擎來處理程式。

    Google Chrome的V8是採虛擬機器架構,直接把JavaScript語言編譯成CPU的機器語言,不像其他瀏覽器會先轉成中繼語言再解析,V8也有更好的記憶體回收機制和更佳的程式處理方式,就像所有的瀏覽器一樣,Google Chrome也宣稱自己是最快的!

    效能測試

    由於Google Chrome現在還在0.2 Beta版(0.2這種版號,可能比較接近Alpha吧?),所以我們測試標準一律是各家的最新測試版,而非正式穩定版,讓大家一起站在相同的起跑線上。在HTML/CSS的排版速度上,Google Chrome以驚人的速度拉開差距,比第二快的Firefox 3.1足足還快了四倍!這也是為什麼筆者一直很期待KHTML引擎能快點移植到Windows上,讓大家都能體驗這引擎的高速。

CSS測試是用http://www.howtocreate.co.uk/csstest.html的測試網頁。

    JavaScript測試

    JavaScript的部分,Firefox 3.1 Beta雖然只有小改0.1的版號,但卻換了一個全新的JavaScript引擎「Tracemonkey」(由JavaScript發明者、Mozilla技術長Brendan Eich親自操刀),讓速度暴增;但最驚人的還是Opera 9.6 Beta,在JavaScript速度上拔得頭籌,不過Firefox 3.1、Google Chrome、Opera 9.6的速度都非常快,差距不大,大家一起拿IE8當炮灰來耍。

JavaScript測試是用Celtic Kane所寫的測試程式(http://celtickane.com/webdesign/jsspeed2007.php)。

    記憶體佔用量

    現在瀏覽器可以吃掉比作業系統更多的記憶體,因此瀏覽器的記憶體回收機制非常重要。筆者開啟最常逛的十個巨型網頁(圖文多、JavaScript複雜),放五分鐘之後看記憶體使用量,發現Firefox 3.1真的卯足全力修正記憶體問題,是全部瀏覽器佔用最少記憶體的,再來則是Opera 9.6與Google Chrome。不過Google Chrome的多重程序架構本來就傾向會佔用較多資源,能接近Opera 9.6的水準也相當不易。而且Firefox幾乎所有人都一定會再安裝Extension,增加資源耗用,所以實際使用下應該會是Opera 9.6佔的資源最少。

    總之,測試結果有點出乎筆者意料,原本以為CSS測試會是Opera獲勝(畢竟CSS的發明者在Opera公司裡),結果卻是Google Chrome狂巴所有對手;而JavaScript則是Firefox 3.1領先大家,不過Firefox 3.1、Opera 9.6、Google Chrome即使採用的作法不同,但大家有志一同,都在最新測試版大幅加快JavaScript處理速度。只有IE還在繼續擺爛,平平是Beta測試版,就IE8頻頻當機,不過這早就是大家已經習慣的微軟「特色」了。

記憶體測試時,先開啟十個資料量很大的網頁,再用Google Chrome的about:memory指令查看記憶體用量。

    結語

    正當大家都以為瀏覽器市場已經進入「穩定的」混亂狀況,IE、Firefox、Opera、Safari各佔一方,各有自己的死忠或習慣用戶(實在很難想像有人「死忠」地用IE),結果秘密研發兩年的Google Chrome突然跳出來攪局。雖然它還有諸多使用上的缺點,比如縮放網頁時不能連同圖片一起縮放、連個tab列表都沒有,tab一多就整個炸了,也缺少書籤管理功能,缺少extension機制並無所謂,但Google Chrome真的只具備「最基本」的功能,它能撼動原本的瀏覽器市場嗎?短期內恐怕很難。就跟IE以外的瀏覽器一樣,Google Chrome鎖定的是「非」一般電腦使用者,因此Google Chrome得加入更多實用功能,不然很難成為阿宅們日常使用的瀏覽器。但是,Google Chrome現在還在區區的0.2版,Google明顯是先把瀏覽器的核心基礎打好,之後再慢慢加入新功能,如果Google Chrome能把Google目前所有的服務,以某種方式和瀏覽器結合,或是Google Gears更為普及,那絕對會吸引更多人使用Google Chrome。

    至少,Google Chrome創新的想法一定會帶來刺激,讓整個網際網路朝向新的模式前進,筆者已經厭倦Web 2.0的說法,不管未來的網頁是叫什麼,它一定跟現在的更為不同。市佔率等等也許真的只是其次,就像Opera的人所說的,像Google這麼龐大而出名的公司都跳進來做瀏覽器,可讓更多人了解其實還有IE以外的選擇,只要寡佔者被迫要進步,那整個WWW就進步了。

arrow
arrow
    全站熱搜

    咖啡王子蔡大哥 發表在 痞客邦 留言(0) 人氣()