知乎上有不少人问:“如何评价谷歌浏览器禁止运行Flash?" 针对这个问题,本文作者罗志宇,混迹Opera浏览器十年的CTO,他从浏览器插件发展的历史告诉你,这只是一个美丽的错误。以下这种框,想必很多人都看到过了:
事情的起因还需要追溯到2013年,Google突然发了一个通告,说是Chrome浏览器会逐步的去掉对NPAPI插件的支持。这个事情很快就过去了,因为NPAPI这种江湖黑话太不亲民了,这个东西到底有啥卵用,广大人民群众也并不清楚。关于谷歌公告,可以点击这里查看。
但是其实蛮重要,因为除了Java以外,大家喜闻乐见的Flash,也是NPAPI插件。
时间已经到了2015年,这次可不是说说而已了,Google正式推出时间表:
2015年1月开始,除了非常流行的NPAPI插件,其他一律屏蔽;
2015年4月开始,所有的NPAPI插件默人都是关闭的,用户需要在高级设定中手动打开;
2015年9月,所有基于NPAPI的插件无法使用,不管你是Java,支付宝,或者是Flash。
其他浏览器厂商,比如Opera,火狐,也纷纷表态会逐渐淘汰NPAPI。
Opera:我早就说了啊
火狐:我还是会支持的,只是大家要一起来淘汰这个技术。
但是,NPAPI到底是什么?
NPAPI全称叫Netscape plugin API,听到这个名字是不是有时光倒流的感觉,没错,就是那个当年被微软一棒子打死了好多年的Netscape浏览器发明的一种扩展浏览器的方式。
是不是觉得好拗口?没办法,我们要从浏览器插件本身开始说起。
HTML作为在浏览器里面承载展现内容的规范,设计起来其实非常困难。太简单没法用,太复杂了浏览器厂商实现起来又有困难。一开始的时候HTML只是设计用于承载图片,文字一类的主流内容。不过浏览器厂商很快就不满意了,因为除了图片文字以外,很多小众内容,浏览器用户实际上是有需求的。比如,PDF文档,以及视频,音频。
为了解决这些问题而去要求W3C把相应的内容加入到HTML标准里面是很不现实的,标准的制定非常繁复,周期也非常长,小众内容到底有没有必要加入HTML规范,这种哲学问题一旦讨论起来谁都不知道啥时候能结尾,于是浏览器厂商们发明了插件这样一个机制,这样如果有一些内容不被HTML直接支持,用户又确实有需要,那么这部分内容就可以用插件来处理。
所以,插件本身对互联网的发展,是有重大贡献的,没有插件,很多新的内容,比如视频,比如向量游戏(Flash),可能早就胎死腹中了。
W3C(万维网)非常识相地很快就把插件机制正式纳入到HTML4标准里面。W3C毕竟不是一个强力部门,它更像各大浏览器厂商背后妥协的产物。
不过按照W3C的哲学,插件毕竟只是对HTML的一个补充。而一旦某些插件提供的内容由于市场原因反而变为主流,那么W3C就会马上将其纳入到HTML规范中去,让浏览器原生就支持。
这个提案是Opera提出来的,我还记得Hakon Wellium Lee在Opera员工大会上面兴致勃勃地讨论这个标签的场景。
这个提案现在还在这里,大家有兴趣可以看看这里
看到这里,插件在浏览器这个领域的作用已经不言而喻了。
浏览器承载的内容=HTML (主流内容)+插件(小众内容)
而W3C会时刻监视这个等式,动态调整HTML支持的内容以维持这个等式的动态平衡。
现在你知道为什么HTML5会加入video、audio标签了吧。其实严格意义上讲也包括svg,canvas一类的标签。
而NPAPI就是浏览器插件架构的一种。事实上,NPAPI插件架构是个非常好的架构,一共就40几个API, 相对于另外一种浏览器插件架构:ActiveX来说,简直就是业界良心。
这里只有一个问题,它的发明时间是1995,而在那个时候手机还可以砸死人,学校的电脑房要穿鞋套才能进。
那个时代所有类似的API(应用程序编程接口)设计者几乎都非常自然的忽略掉了安全性问题。
你不信?我们来看看NPAPI插件和浏览器的关系是什么,同时对比下和同样执行网络下载代码的Javascript引擎的位置。
看懂了吧,你以为NPAPI是插件是吗?其实它和浏览器是平级运行的,它甚至可以打开网页,给你安一个木马,然后随手帮你关掉杀毒软件。
可是,你说NPAPI不就40几个API嘛?少年,你想多了,NPAPI不限制插件自由访问系统所有的API。
而Javascript引擎的限制就多得多,事实上,Chromium系列的浏览器Javascript引擎均是运行在沙盒之中,一举一动都是被严密监视着的,敢有异常?浏览器分分钟杀死你。
除了安全性以外,插件们还质量参差不齐,一旦崩溃浏览器就得跟着一起崩掉,于是各个浏览器又一把鼻涕一遍泪地把插件们放到另外一个进程中运行,既然惹不起难道还躲不起嘛。其他的耗电量,图形效率,脚本效率一类的也差不多,这里就不讲了,讲多了都是泪。
如果只是安全,那你把插件放到沙箱里面隔离起来不就行了吗?
是的,谷歌当年也是这样想的,于是他们发明了PPAPI,然后在业界里面振臂一呼,大家来看,我的这个新API好啊,插件用起来更安全,还有沙箱。
这个是业界伙伴们的态度:
Java说:我最近听说Chrome不支持我们了,大家请换浏览器,就这样。
本文来源:不详 作者:佚名