關于HTML5的11個讓人難以接受的事實

fmms 14年前發布 | 14K 次閱讀 HTML5

HTML5Web開發者提供了很多強大的新特性,但是它的一些特定的限制會讓它無法和本地應用匹敵。

HTML5整合進了很多新的特性,并且有可能提升 Web 編程模式。和每一個閱讀技術資訊的人所知道的一樣,沒有任何一樣東西能像 HTML5 對互聯網造成更多改變。在代碼中加入一些 HTML5,網站會變得更快更炫。但是 HTML5 能為那些想要要網絡上實現本地應用表現的人做什么可能不在此列了。

在享受了 HTML5 的新標簽以及 APIs 之后,現在已經是時機來承認 HTML5 模式確實是有一些限制的。這些限制不但會讓我們對 HTML5 的幻夢破滅,還有可能讓我們在某些場合不再使用 HTML5。

事實上是,盡管 HTML5 確實有很強大的功能,但它并不能解決所有問題。它的一些附加功能是非常強大的,能讓 Web apps 成為 native app 的強有力的對手,但是安全問題、本地數據存儲的限制、同步問題以及政治問題都會讓我們減小對它的期望。畢竟,任何技術都是有其限制的。

下面是 Web 開發者需要接受的一些關于 HTML5 的事實。

事實1:安全是一場噩夢

客戶端計算最根本的問題是用戶最終擁有了對機器上運行的代碼的控制權。在 Web apps 中,當瀏覽器擁有一個很強大的調試工具的時候,這種控制權比以往更容易被濫用。

當在瀏覽器中集成了一個 Javascript 的調試器比如 Firebug,任何對 非死book、Google 以及其他網站感興趣的人都可以插入斷點來查看代碼。這對于了解網站是如何運行的是非常有利的,但對于安全問題來說卻是一場噩夢。

想象有個變量的值是你想要改變的,Firebug 或者其他一個瀏覽器調試器可以讓你很容易地將數據改成你想要的任何數據。你想要通過改變你的地理位置來捉弄一下你的朋友嗎?那么你可以修改瀏覽器中的進度和維度變量,讓瀏覽器“處于”世界上的任何位置。所有你的 Web 應用的 neat features 都可以被修改,瀏覽器使得這樣的修改比在本地應用中更為容易。

對于引發的安全問題,也是有些限制的。一些 Javascript 工具比如 Google Web Toolkit 和標準的編譯器一樣復雜,它們的輸出是非常令人費解的。但是一些工具比如JavaScript Deminifier能解決這個問題。

威脅當然也跟應用性質有關。一個人通過改變瀏覽器上顯示的經緯度來和朋友開玩笑說在環游世界的途中是一回事,而獲得其他人的權限又是另外一回事了,這會帶來威脅。一旦涉及到金錢,情況會更糟糕。所有這些都意味著基于客戶端的 HTML5 是不能用來處理敏感數據的,每個人都應該對自己的能力加以警醒。

事實2:本地數據存儲是有限制的

瀏覽器中隱藏的本地數據庫讓 Web 應用更容易在電腦上緩存數據。對任何一個在瀏覽器中享受這種臺式機體驗的人來說,這些數據庫可以節省帶寬,提升性能。然而它們肯定比不上本地應用的數據的強大功能。

HTML5的數據存儲能力毫無疑問是很重要的功能,但是你仍然不能將存儲的數據遷移到另外一臺機器上,或是制作副本、備份、用另外一個應用打開。所有這些數據都是隱藏在瀏覽器之下的。

某種程度上說,這是最糟糕的一種情況。因為你要承擔存儲這些數據庫的所有責任而不能對它有任何控制。

一些最新的瀏覽器可以讓你看到在你的機器上創建了哪些數據庫,但這些信息是有限的。Safari 甚至可以讓你能夠刪除數據庫,但是你不能瀏覽這些信息或是將它們遷移到另外一臺機器上,這些文件在設計之初就沒有讓它能夠很容易遷移,盡管你可以做到這一點,如果你知道到哪里找這些文件的話。

你同樣不能深入到文件中看到底存儲了什么。當然,一個程序員可以看懂這些文件,但前提是他們研究清楚了文件格式并且做一些 hacking。這些文件不像表單或者文本可以很容易地榮任何編輯器打開,使得它們不像本地應用那樣容易被人們讀懂。

事實3:本地數據可以被操縱:

用戶可能并不擁有對數據的控制權,但是網站同樣也被限制不能處理用戶數據。用戶換瀏覽器了?用戶換機器了?很多 Web 開發者對此都無能為力。因為同步問題,他們不能讓用戶創建更多數據。

Web 開發者也需要擔心本地數據庫的安全。盡管沒有工具可以讓用戶可以很容易修改本地數據并升級權限,但服務器同樣也沒有能力去阻止用戶做到。所有因為運行用戶修改 Javascript 代碼的安全漏洞同樣會影響數據庫。它們門戶大開,等著有人寫一個 Greasemonkey 腳本或一些本地代碼去更改數據。

事實4:離線數據對同步是一場噩夢

HTML5的本地數據存儲極大提升了離線使用 Web 應用的能力。唯一的問題是數據同步。

如果一個 Web 應用連接到網絡上,它可以持續地將數據存儲到云中去。而當應用離線時,應用中發生的數據就不能存儲到云中。如果一個人切換了瀏覽器或者使用了不同的機器,就會出現副本,這時同步就會成為一個大問題。更糟糕的是,時鐘本身就可能是不同步的,使得發現最新被保存的數據是不現實的。

當然,這對本地應用來說也一直都是一個問題,但是在本地應用中,為同步負責的是人,他可以通過查看文件名并改變日期來進行同步。但是因為 HTML5 并沒有給用戶對隱藏在瀏覽器之下的數據庫的控制權,開發者必須提供用戶界面讓用戶通過這個界面來管理同步問題。

這并非是一個完全棘手的問題。開發人員可以通過使用版本控制系統來處理這個問題,而現今的版本控制系統在處理這些問題上已經變得越發復雜了。但擁有這項技術并不意味著這是一個很容易使用的解決方案。合并不同 GIT 庫是件很費時間的事情。HTML5開發者們需要先處理好這些問題,才能管理 HTML5 Web 應用的同步。

事實5:云端什么都沒有向你承諾:

為 HTML5 將數據存儲在云端而帶來的所有結構性的問題來責備 HTML5 實際上不是件很公平的事情,但云端是一個必須的部分,因為云省去了安裝軟件和備份數據的麻煩。

由于 HTML5 本地數據存儲的限制,大量 Web 應用存儲仍然要保留在服務器端,但這可能是災難性的。就在最近 非死book 決定將不再使用一個基于 Linux 的插件來上傳照片,結果,這個插件去掉的,同樣被去掉的是通過這個插件上傳的照片

這樣的例子比較少見,但是因為各種原因,它們正變得越來越多。你能確保那個可愛地免費提供他們的一切 HTML5 應用的新興公司在幾年后甚至幾個月后還存在嗎?你只能自求多福。

情況還更糟糕。正如很多 Web 應用所明確說明的那樣,這些數據并不是你的,在大數情形下,你不能訴諸法律來恢復數據。有些更離譜的服務條款甚至說數據可以“沒有任何原因”就被刪除。

HTML5不僅沒有避免這個問題,它的結構實際上是保證了任何由你的瀏覽器緩存的數據都會存儲在云端,這些數據是脫離了你的控制的。HTML5的炒作說這是它的一個優勢特性,但這實際上卻很容易造成不利影響。

事實6:強制升級并非是每個人都想要的

有個故事,或許是杜撰的,說一個人使用 Gmail 賬戶和酒吧里認識的人保持著隨意的聯系。當 Google+ 出現以后,所有的歷史記錄都出現了,因為 Google+ 在論壇里自動連上了那些舊的地址。每天,這些舊名字和舊面孔都會出現詢問是否要加入到論壇中去。

當 Web 應用公司需要升級的時候,他們會將所有人一次性升級。盡管這據說是為了讓用戶不再受升級安裝文件之苦,但對于那些不想使用新特性的人來說,這確是一場噩夢。這不像上面是一個關于人們隱私的問題。新軟件可能因為新舊軟件包之間的依賴關系而經常崩潰。

事實7Web Workers并不會處理優先級

Web Workers(譯者注:一種新的JavaScript 編程模型)是 HTML5 的一個非常耐人尋味的特性。與其去使用 Javascript 傳統的 wait、delay 和 pause 命令,現在 Web 開發者可以拆分他們的命令并且整合到 Web Workers 的 CPU hogs 中。換句話說,HTML5 Web 開發者可以讓瀏覽器表現得像操作系統一樣。

但問題在于,Web Workers 并沒有復制操作系統的所有特性。盡管它提供了一種方式來講負載分支并分離,但是卻沒有方法來管理負載或是設置優先級。API 只是讓消息傳入或者傳出 Worker 對象。這就是它做的一切了,剩下的都交給瀏覽器了。

CPU 豐富的應用比如 code crackers 會潛入流行網站的后臺嗎?用戶被交給會周期性被竊取的網站了嗎?病毒已經附在一切有用的軟件上了,那么攻破網站就只是時間問題了。而用戶面對這一切能做的很少,因為他們沒有辦法去監測或者跟蹤 Worker objects 做了什么。電腦被重定向到指定網頁的時候只會越來越慢。

事實8格式不兼容比比皆是

HTML5引入了<audio>和<video> 標簽,第一眼看上去,它們和圖像標簽一樣好用。只要在其中加入一個 URL,瀏覽器就會引入數據流。然而,如果它真有這么簡單的話,為什么我浪費了兩個星期來讓所有主要的瀏覽器可以播放基本的音頻文件呢?

個別瀏覽器構建者只實現了部分而不是全部的音頻視頻格式確實不是 HTML5 委員會的錯。大家都是人,都想要爭奪統治權。往往在一個瀏覽器上工作正常的文件到了另外一個瀏覽器上卻不能工作了。開發者要如何測試這一點呢?API 開發者非常聰明,他們加入了 canPlayType 函數,但就是這個函數也不是所有瀏覽器都支持的。

事實9:各瀏覽器的實現是獨立的

HTML5的田園詩般的愿景是一回事,其實現的蹩腳的現實是另一回事。誠然,程序員正在盡他們最大努力來實現架構師的夢想,但就是有一些標簽和對象無法正常工作。

例如,有很多理由去喜歡 HTML5 的地理定位 API。它提供了對隱私的一定程度的包含,對精確度也有控制。要是它能一直一貫地工作該有多好——有的瀏覽器就會總是超時,這個瀏覽器還是不太聰明,因為它應該知道臺式機上是沒有 GPS 芯片的。

最后,人們會去抱怨瀏覽器沒有完全實現 HTML5 的特性,而不是去責備 API 本身的結構問題。這一事實凸顯了 Web 開發者在開發基于 HTML5 的 Web 應用時所面臨的挑戰。

事實10硬件idiosyncracies帶來新的挑戰

抱怨某些瀏覽器構建者超出了職責要求而提供更好的性能表現似乎也不公平,但這并非是恩將仇報。一個法拉利擁有者在繞過了一個燈桿以后,他就會發現有時候額外的動力并非總是好事。

Microsof 通過將 IE 和低端硬件驅動整合而提升了 IE 瀏覽器中畫布對象(Canvas object)的性能。它甚至做了一些游戲比如 pirateslovedaisies.com 來顯示其性能。

但現在程序員們需要注意這些附加功能是否能夠實現,并且這些代碼的運行速度也是無法保證的。

例如,pirateslovedaisies.com 的游戲設計者設計了一個開關來開啟或者關閉 IE 支持的特性。但是,有沒有一個 API 來告訴你這些特性是什么呢?沒有。最簡單的方式是通過瀏覽器名字來進行測試并估算幀速率。很多游戲開發者都有多年經驗來了解可用硬件的范圍,唯一的解決方法就是禁止創新,但這將是 Web 開發者又要解決的一個新的問題。

事實11:政治一直都存在

有個叫 Ian Hickson 的人,是 HTML5 標準的主要起草者,也是生命的最高獨裁者(the Supreme Dictator for Life)。我想他們這是在開玩笑,因為這樣的頭銜實在太不匹配了。標準的編寫者只是在提出建議,瀏覽器公司的編碼天才們才是最終做出決定的人。他們可以選擇實現或者不實習某個特性,然后 Web 開發者就要去測試結果是否穩定。幾年以后,標準就會根據與實現程度的匹配情況做出改變。

很多 Javascript 開發者將兼容性問題都留給了開發代碼庫的人,比如 jQuery。這些層讓我們不必去了解不同瀏覽器之間的差別。但是,這些代碼在將來是否足夠健壯?只有時間才會知道。

這個議題凸顯了這個領域中最根本的問題。我們想要自由、創造性以及因為瀏覽器間的激烈競爭而產生的豐富特性。創新的腳步非常快,但是因為瀏覽器開發者都爭相添加新的特性以贏得先機,使得各個瀏覽器之間有更多的不同。

但我們希望能有一個統一的指揮者這樣就能獲得穩定性。但是,對于獨裁和自治間的爭斗,從來都沒有一個理想的解決方式。與其為這些差異頭疼,我們或許想要聽聽 Winston Churchill 對下議院所說的話:“事實上,民主是一種最糟糕的政府形式,除非其他的形式都經過了一次又一次的試驗。”

原文鏈接:11 hard truths about HTML5
來自: http://www.webapptrend.com/2011/12/1266.html

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!