最近我遇到很多响应网站的性能问题。他们中的大多数,问题是如此明显,以至于他们几乎无用的东西除了最新一代的智能手机。考虑到反应作为一个概念的目的是达到更广泛的受众,这似乎适得其反。
这个问题是最大的原因仍然普遍desktop-first设计范式。思考的角度尝试解决这个问题,但这本身并不能保证你满意的性能。我们似乎都过于依赖或多或少优雅降级。我们依靠垫片和polyfills缺失的功能。我们依靠库,以支持快速开发和浏览器兼容性是一个问题的时候。
“为什么担心?“你可能会问。“我们的大多数游客高性能智能手机运行他们最新的操作系统版本。他们可以处理我们的网站。分析告诉我们。”
对不起稻草人的观点,但我认为这应该说往后仰的人可以使用你的网站将大部分的用户。如果您没有看到Android 2.3在你的分析,这是否意味着没有用户与设备?还是意味着你的网站没有提供这些用户?那一代的人认为很多设备仍在货架上,即便在今天购买全新的。你不应该把它直接过去技术。
因此,我想谈谈理想情况和实际的web开发的目标。和实践范例,让我们更接近目标。
模块化设计优先
很大一部分的年度电话销售仍由功能手机。一个更大的部分人口每年都不买手机,但是有一些网络设备的占有能力。添加到这些数字上一代智能手机仍在使用,添加kindle和其他web semi-capable设备(WAP设备、电视的烤面包机、t恤和砖)。把它们都加起来,你可能会达到一个惊人的收购价格。
考虑观众的用例。他们不会读长文章,浏览和研究他们的设备。但他们可能会经历的恐怖数字键盘上键入URL使用方向键和导航页面去一个电话号码或双击一个地址。
有多难我们实现一个sub-mobile-first布局,将只提供信息设备低于某一阈值的功能和性能?
优雅的改进
优雅降级为最小的最佳实践,我们已经创建了一个笼统原则(某种程度上)阻碍思维超越它。一旦优雅降级到位我们肯定能说我们的工作是完成了,并且做得很好。越来越多我们甚至不用去想它,因为它已经被使用的各种框架和库覆盖。最后polyfills和垫片完全删除功能退化在某些情况下的需要。
这个功能变得越来越容易获得,需要考虑它(更不用说之外)变得越来越遥远。
从这篇文章的角度来看这可能是分解如下:
下流的退化:如果一个特性不是现成的,以这样一种方式实现失败,就不能使用或使用方式非常不切实际。
优雅降级:如果一个功能不是现成的,它仍然失败,使接受的可用性。
没有风度的改进:如果特性没有现成的模拟polyfill或垫片。
在那里,问题解决了。
除非你认为这些低端设备的性能。
缺乏处理能力和数据的能力他们的弟弟妹妹,他们被要求携带更大的负荷。采取polyfills作为解决方案创建一个错觉,所有现代功能现在可用在所有设备和可以使用没有问题。
所以你实现modernizr和polyfill以防一切。至少主管设备加载的数据量最大的,最伟大的数量和执行处理。从而确保“最好”的终端用户体验。