最近上线一个网站,发现会出现IE10及以下浏览器不兼容的问题,刚好前几天有朋友们讨论过“优雅降级”和“渐进增强” 的话题,所以整理了一下。
定义
渐进增强(progressive enhancement):针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
优雅降级(graceful degradation):一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
观点
渐进增强观点认为应该关注于内容本身,更适合在产品一开始还没有大用户量的时候就去做这件事。
优雅降级观点认为应该针对那些最高级、最完善的浏览器来设计网站。那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如IE、Mozilla等)的前一个版本。在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨(poor,but passable)”的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。
抉择
Web端产品研发之前,就要确定产品的目标用户,进行用户调研,了解使用低配版浏览器的用户占总用户的百分之几,用户的使用习惯等。开发的时候还要考虑成本问题。
使用渐进增强的方式进行开发,先做一个基本功能版,兼容大部分低配版浏览器,然后进行迭代,即针对各个浏览器进行渐进增加,增加各种功能。在迭代过程中,可以建议用户升级浏览器,以便获得更好的体验。当用户认可你的产品,升级浏览器的意愿就会比较高,对于不愿意升级浏览器的用户,也是有基本功能可以使用的,这样既兼顾了内核用户的使用习惯,又可以使产品不断优化迭代。
使用优雅降级的方式进行开发,如果不这么做,从一开始就不断去迁就,对后面的版本迭代会造成更高的维护成本和升级成本,并且,用户会一直工作在这种两边互相兼容的系统环境下,出错率更高。结合实际,IE8.0 是一个偏旧的内核版本,从理性上考虑,软件的发展势必淘汰掉一些现有的旧东西,所以长痛不如短痛,及时止损降低研发成本和增强后续的开发兼容性才是更好的选择,所以让用户升级浏览器来兼容产品也符合优雅降级的一部分理念。