有關 Acid3 測試

Saturday, February 21, 2009

最近看電腦雜誌都開始用 Acid3 測試的瀏覽器對未來 Web 技術的支持度,但要留意 Acid3 的這麼一句:

To pass the test, a browser must use its default settings, the animation has to be smooth, the score has to end on 100/100, and the final page has to look exactly, pixel for pixel, like this reference rendering .

意思就是說,不能只單單看分數是 100 就等於通過測試,出來的樣子還要和 reference 一模一樣,而且動畫還要是順暢的。

暫時為止,據說只有 Webkit 和 Presto 的引擎通過 Acid3 測試。當然,Acid3 只是瀏覽器的其中一面,不足以論成敗。

延伸閱讀: Acid3 receptions and misconceptions and do we have a winner?

不走回頭路

Friday, January 30, 2009

自從 Chrome 過了新屎坑期,聲勢又一下子沉了下來,即使上年尾正式跳出 beta,也不是人人留意。 《數位時代》 上一篇翻譯文章 Google Chrome, Out of Beta. Will That Be Enough? 提到年尾時 Chrome 的市佔率不足 1% ,增長太少太慢,Google 離其「雲端夢」還有很遠。

那 Chrome 在 Google 的「雲端夢」裏,佔多重位置?

Google 的商業模式是網上賣廣告,所以她要令用戶黏著網絡。要增加黏度,除了讓用戶搜尋網頁,還可以處理電郵、文件、日程等等。她們做得非常出色,很多人已轉用一系列的 Google 應用。最終可能一個簡單的 OS 再加一個瀏覽器已足夠所需。

由網頁到網絡應用程式,瀏覽器要作出相應的改變,也是 Chrome 推出時的重點:更快、更穩定、更安全和提供離線運作。Chrome 的確令人眼前一亮,但並不超前其他瀏覽器很多。Opera、Firefox 已有很不錯的速度, Tracemonkeyv8 也可以一拼。離線操作上,各個平台上主流瀏覽器則可以安裝 Gears 來支持。例如即將推出的 Offline Gmail ,也並不一定要使用 Chrome 才能用。

換句話說,即使沒有 Chrome,其他瀏覽器也能完 Google 的「雲端夢」,因為 Google 靠的是「公開」。用的是公開的網頁標準和技術,開發的 Chrome、V8、Gears 都是開源的,這當中沒有甚麼秘密,也沒有甚麼專利技術,人人皆可參與。

第一次瀏覽器大戰,IE 與 Netscape 各自推出專有技術吸引開發者,瀏覽器的市佔率有決定性的影響,結果出現了很多「只限 IE」的網頁。但 IE 不思進取,苦了開發者,所以近年開發都提倡支持標準技術,瀏覽器也以此方向發展。第二次瀏覽器大戰,不會走回頭路,鬥的不是專利技術,而是對公開標準的支持和瀏覽器本身的實用性、效能等等。而無論瀏覽器怎樣死鬥爛鬥,只要是依公開、標準的路線,Google 也會贏,因為用戶對網絡的黏度增加了。Chrome 的市佔率如何,影響也沒有那麼大了。

對 Google 來說,Chrome 仍是重要的,但可能非為「雲端夢」的主角,而是作幕後黑手,「指引」瀏覽器的發展方向,親身示範下一代瀏覽器該如何,才能配上越來越豐富的網絡應用,刺激開發社群走向其「雲端夢」裏。

有關 Chrome 的東拉西扯

Tuesday, September 9, 2008

對不起又要說 Chrome 了。經過接近一星期的使用,又看了很多不同的意見,也想詳細談談自己的一些看法。

Chrome 的名字

首先,有很多人都不知道為甚麼 Google 要叫這個瀏覽器做 Chrome (雖然中文版本仍然叫「Google 瀏覽器」)。有些人就從直譯意思「鉻」或「顏色」想,但似乎仍是摸不著頭腦。

雖然沒有言明,事實上無論在 漫畫發佈會 裏都提到 Chrome 是用戶介面那個框框的意思 (可看維基 User Interface Chrome ),是開發人員的用語。

換句話說,Google Chrome 就是「Google 介面/框」的意思。想想這個產品是特地設計用來運行 Web Application,所以就不是「瀏覽器」,而是一個運行 Google 服務的「框」而已。這個「框」模糊了桌面軟件與瀏覽器界線,也正是 Google 的目的

有關效能

要達到此目的,其中一個是改善 Javascript 的效能,V8 的效能的確不錯,程式給人即時的反應,而在一些 測試 當中,V8 也是領先的其中之一個。當然人們最常比較的,是 V8 跟 Firefox 3.1 將會使用的新 Javascript Engine Tracemonkey比較結果 是叮噹馬頭,而 Tracemonkey 本身還未完成呢。

除了加快了的 Javascript 效能有助「桌面化」,我覺得其啓動時間亦相當關鍵。Chrome 的啓動時間在我的機器上非常快,由雙擊圖示到 Chrome 出現,差不多是即時的 (當然往後還會有載入網頁的時間),這已經給了我非常近似於一個輕巧的桌面軟件感覺 (有如開 Notepad 般),絕對增加我「啓動」她的誘因。相比起來,Firefox 的載入時間相對較長。不過這種比較是不公平的,除了因為我的 Firefox 本身有很多插件外,其啓動時也會查看有哪些插件可更新,是要花一點時間。

Web App 與滑網

至於在記憶體的使用量上,使用獨立 Process 是會花比較多的 (事實上,預設的運作並非一分頁一Process,而是以「Site Instance」來看,詳見 此文 ),Google 在此的理由當然是能夠將記憶體清理得更徹底,也不用影響其他正在運作的頁。不過已經習慣使用分頁的人,都會一下子開很多個分頁,多勞多得,記憶使用量便相當可觀。 Jedi 做的小測,用 Opera 開了 34 個分頁,才是 108 MB 而已,但 Chrome 開六個已是 124MB 了。如果大家只是在滑網,使用其他會否更加合適?事實上我就是這樣子用:用 Chrome 開啓如 GMail 等 Web Application (或索性用 Chrome 建立程式捷徑),看網頁仍然使用 Firefox (當然還因為插件)。

但這種奇怪用法也有不方便的地方,例如想將看到某網頁的內容寄給人,結果還是要特地在程式間做 Copy and Paste。Web Application 不應該是獨立運作的。暫時來說,網頁服務之間主要還是靠超連結作連繫,Firefox 裏各式各樣的插件,甚至剛剛推出的 Ubiquity ,就有助打破超連結的悶局,通過 Open API 和 Microformat 等將資訊在服務之間流通。Chrome 將 Web Application 變得像桌面軟件,但也必需考慮網頁與電腦、網頁與網頁間溝通,而插件開發就是其中一個方向。

漏水 IE

Friday, September 5, 2008

瀏覽器大戰,走的方向都是以運行 Web Application 為主,所以大力加重 Javascript 的效能改進,得益的自然是一般用戶。可是,我想即使是現在,仍然有很多開發工作要以 IE6 為對象。IE6 除了超多 CSS 臭蟲 外,Javascript Engine 的漏水 (記憶) 情況也是很嚴重。

MSDN 上,就已經有專屬文章讓大家了解 IE 漏水的原因 ,有四種:Circular Reference、Closure、DOM Insertion (Cross-Page Leak) 和 Pseudo Leak,全都是很容易中招的地方,開發者只能自求多福,盡量除蟲。

Circular Reference 和 Closure 大致上是同一類問題,當 Javascript 和 DOM 之間互有 Reference 的時候,IE 就不懂 GC,原因是 IE Javascript GC 和 DOM 的 GC 採用不同機制。但現在的 UI 越趨複雜,Javascript 和 DOM 有更緊密的接觸,一不小心就會留下這些 Circular Reference。而近年被談論得最多的 Closure 語法 (?),在文章裏給大家的意見是:「可免則免」。

至於 DOM Insertion bug,我寫過一個有 lightbox 加 Ajax Form 的元件,當中當然有大量的 DOM object 的處理。但這個元件在 IE 上一開,就會消耗 7-8 MB 的記憶,而最可惡的是即使是跳頁,記憶也不會被釋放。結果,用上半個小時左右的 IE 已經佔數百 MB 的記憶。這個 bug 的解決方法,是改變一下插入 DOM 的順序,看似簡單,但卻很容易被忽視。

Pseudo Leak 指的是同頁上的 DOM Object 即使被移除了,記憶也不會被釋放,只會在跳下一頁時才可以清除。MS 認為,因為最終記憶是可被釋放,所以才說這是 Pseudo Leak。但對於一些 Single Page Application 來說,這又是另一個大頭痛。

以上種種問題,的確會令開發者膽子變少,不敢用太多新的寫法、技術,結果會停滯不前,也少了創意。這也是為甚麼靠 Internet 而存在的 Google,要推出自家瀏覽,始終不能靠一個漏水瀏覽器吧!

對付 IE 的漏水問題, sIEve 會是大家的好幫手。使用 Library 如 jQuery 也會有幫助,裏面有蠻多 code 特地應付以上談到的漏水原因。IE 也有一些 Patch 來治漏,不過效果好像不太理想。另外也有一些偏門技巧如 finallyCollectGarbage() 等等。

P.S. 寫此篇明顯是因為近日又要與 IE 搏鬥的關係…

IE8 InPrivate 威脅 Google 業務?

Wednesday, September 3, 2008

Google Chrome 推出,大多新聞都認為這是用來挑戰 IE 的。當中大都會提到一個論點:IE8 Beta 2 內附的保安功能,令 Google 無法追踪用戶的上網行為和使用習慣,威脅到 Google 的搜尋和廣告業務。

InPrivate Browsing 本身並沒有甚麼特別,只是會在結束瀏覽時幫你自動清理。同樣的功能在 Chrome 裏面也有,叫 Incognito。但無論是 InPrivate 或是 Incognito,其實是不會阻此你造訪的網站去留下你的瀏覽紀錄的。例如只要你登入了 Google 帳戶,你的搜尋歷史還是會被紀錄下來,Google 還是可以為你「度身訂造」搜尋結果。

比較具爭議性的,是 InPrivate Blocking,此功能會阻擋頁面上的第三方腳本、圖片等等。例如許多網站都會加入 Google Analytics 用來統計網站人流,但 IE8 的 InPrivate Blocking 只要遇上多於十個這樣來源相同的第三方腳本,就會自動阻擋。Adsense 的 Javascript 腳本也會遇到類似的情況。

問題是現在的網頁,大都是由許多不同的網站組合而成的,很多的廣告、統計、相簿等等都是「第三方」的,甚至有些是要靠其他網頁來提供一些功能 (如 disqus ),開著自動的 InPrivate Blocking 會很不方便吧?更實際的做法,應該是配合 InPrivate Subscription 來更新要阻擋的網站列表,而此表上 Google 會出現的機會不大吧?

而事實上,Google 會不會使用 Analytics 或 Adsense 的資料,再針對個人資料 (IP 或者 Google 帳戶?) 做 targeted ads?如果會,沒有這些資料會對其搜尋結果或廣告的業務有多大影響?我很有疑問。

相關連結: IE8 and Privacy