事实4:离线数据对同步是一场噩梦
HTML5的本地数据存储极大提升了离线使用Web应用的能力。唯一的问题是数据同步。
如果一个Web应用连接到网络上,它可以持续地将数据存储到云中去。而当应用离线时,应用中发生的数据就不能存储到云中。如果一个人切换了浏览器或者使用了不同的机器,就会出现副本,这时同步就会成为一个大问题。更糟糕的是,时钟本身就可能是不同步的,使得发现最新被保存的数据是不现实的。
当然,这对本地应用来说也一直都是一个问题,但是在本地应用中,为同步负责的是人,他可以通过查看文件名并改变日期来进行同步。但是因为HTML5并没有给用户对隐藏在浏览器之下的数据库的控制权,开发者必须提供用户界面让用户通过这个界面来管理同步问题。
这并非是一个完全棘手的问题。开发人员可以通过使用版本控制系统来处理这个问题,而现今的版本控制系统在处理这些问题上已经变得越发复杂了。但拥有这项技术并不意味着这是一个很容易使用的解决方案。合并不同GIT库是件很费时间的事情。HTML5开发者们需要先处理好这些问题,才能管理HTML5 Web应用的同步。
事实5:云端什么都没有向你承诺:
为HTML5将数据存储在云端而带来的所有结构性的问题来责备HTML5实际上不是件很公平的事情,但云端是一个必须的部分,因为云省去了安装软件和备份数据的麻烦。
由于HTML5本地数据存储的限制,大量Web应用存储仍然要保留在服务器端,但这可能是灾难性的。就在最近Facebook决定将不再使用一个基于Linux的插件来上传照片,结果,这个插件去掉的,同样被去掉的是通过这个插件上传的照片。
这样的例子比较少见,但是因为各种原因,它们正变得越来越多。你能确保那个可爱地免费提供他们的一切HTML5应用的新兴公司在几年后甚至几个月后还存在吗?你只能自求多福。
情况还更糟糕。正如很多Web应用所明确说明的那样,这些数据并不是你的,在大数情形下,你不能诉诸法律来恢复数据。有些更离谱的服务条款甚至说数据可以“没有任何原因”就被删除。
HTML5不仅没有避免这个问题,它的结构实际上是保证了任何由你的浏览器缓存的数据都会存储在云端,这些数据是脱离了你的控制的。HTML5的炒作说这是它的一个优势特性,但这实际上却很容易造成不利影响。
事实6:强制升级并非是每个人都想要的
有个故事,或许是杜撰的,说一个人使用Gmail账户和酒吧里认识的人保持着随意的联系。当Google+出现以后,所有的历史记录都出现了,因为Google+在论坛里自动连上了那些旧的地址。每天,这些旧名字和旧面孔都会出现询问是否要加入到论坛中去。
当Web应用公司需要升级的时候,他们会将所有人一次性升级。尽管这据说是为了让用户不再受升级安装文件之苦,但对于那些不想使用新特性的人来说,这确是一场噩梦。这不像上面是一个关于人们隐私的问题。新软件可能因为新旧软件包之间的依赖关系而经常崩溃。
事实7:Web 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引入了和 标签,第一眼看上去,它们和图像标签一样好用。只要在其中加入一个URL,浏览器就会引入数据流。然而,如果它真有这么简单的话,为什么我浪费了两个星期来让所有主要的浏览器可以播放基本的音频文件呢?