纽约时报网站改版背后的web技术

标签: 系统架构 技术架构 | 发表时间:2014-02-18 15:21 | 作者:admin
出处:http://blog.haohtml.com

nytimes-redesign

原文地址: "The Technology Behind the NYTimes.com Redesign"
纽约时报英文网站今年进行了一次改版,这次改版不仅仅是给一艘大船重新刷了遍油漆那么简单,除了外观上的重新设计,我们也对代码进行了大量的重构,采用了新的框架,让网站更快,也为以后代码的维护、升级便利性进行了重新设计。 Reed Emmons,是这次改版的负责人,在这篇文章将分享我们如何让纽约时报这首老船更快更酷。

很少有机会能够在像纽约时报这么老资格和规模的网站进行一场「从头来过」的重构和设计工作,我这里说的从头来过,不仅仅是视觉设计上的重新设计,更是一个重新发明整个数码传媒平台。纽约时报的上次一次视觉改版是在2006年,但是我们得回溯到2000千禧年才有如此规模的从底层的重构和改版。我们决定重构用户端和服务端以支持我们新的服务、设计和新闻报道,比如说更佳的网站性能、响应式布局等等。尽管有些旧有的代码依旧保留或者进行了深度重构,大部分老的代码都被删除或者仅仅是用来做参考。

静态页面发布:历史的教训

直到今天为止,纽约时报的大部分网页内容还是静态 html 页面,这些页面储存在我们数据中心的硬盘上。当编辑发布一篇新的文章时,会生成和写入一个 html 文件。我们拥有自己的 html 模板,可以让我们根据需求添加不同的插件。当一篇文章要渲染的时候,引擎会自动添加广告和渲染。这套系统的速度和性能足以支持纽约时报网站的高流量,所以到今天为止,也不是特别需要升级这套系统。

这套系统一个很大的不足就是缺乏动态控制性。网页的 html 是固定的,但是其中的脚本和样式表是需要不断改变的,我们的前端开发团队必须围护历史上创建的每一套模板。这也导致了为什么一个两年前发布的新闻同上周发布的文章,会存在一些不同。我们团队的一个前端架构师Eitan Konigsburg,在去年的开放日活动曾经就我们的技术架构历史做过分享。

一个聪明的框架

为了适应更高级和复杂的设计,我们构建了自己的响应式 JavaScript 引擎,可以让我们根据自己的需求使用不用的media queries断点,这个引擎可以通过直接在 html 中添加不同的 class 类命来实现响应式设计。同时,我们使用了 LESS 预处理,使得css 更易围护的同时也满足了我们大部分用户的浏览器兼容性需求。尽管对于用户来说,网站的变化十分精细,但是一篇文章在不同的设备和浏览器,可以产生20种不同的适应变化。以下为我们使用 LESS 的一个例子。

   .ribbon {
   ...
   // responsive
   // 1020
   .viewport-medium-50 & {
      .offset(0, 1, 0, left);
    }

   // 1200
   .viewport-large-20 & {
      .offset(0, 2, 0, left);
   }
}

根据不同的分辨率和设备方向,我们的框架可以自动渲染出不同的界面,还可以根据需求添加不同类型的广告,每篇文章对应的网页有超过100个可以自定义修改的地方。

模块化 Javascript

这次重构需要大量的 js 代码重写以支持大量的订制功能。一个功能强大的前端框架是十分有必要的,这可以让我们使用不同的 js 模块并且能良好兼容共存。Backgon.js 和 RequireJs 给我们提供了一套框架和标准code。我们选择 Backbon 因为相比 RequireJS它提供了令人满意的灵活性和自定义性。Jquery,Modernize,SockJS,Underscore.js 和 Hammer.js 是我们使用的一些库,我们同样使用了诸如 Mocha 和 Chai 来进行测试。

除此之外,我们还使用了一些其他的新技术:

新的 PHP 渲染框架

切换到一个对动态内容要求更好的网站,我们需要使用一个新的渲染引擎,可以快速地利用于大量的有不同需求的文章。现有的 PHP 框架提供了坚实的基础,但是我们仍然选择重新构建一个。为了满足订制服务不同的内容需求,我们在开发的时候使用考虑到增加灵活性的需求,我们的框架必须动态呈现不同的布局和配置在同一页的能力。

新架构简化了开发的,还让我们可以仅用几行代码就能创建强大的应用程序。现在开发一个应用可以使用已有的组件,显著地减少了开发时间。此外,可用模块的复用节省了我们的大量的时间。

提高服务器端缓存速度

有如此多的动态页面,我们的平台需要一个强大的反向代理来保证 PHP 后台不会崩溃。去年五月纽约时代的移动站的Varnish 系统成功给了我们信心,我们相信 Varnish 也是这次我们的最佳选择。Varnish 是高度可配置,从服务器缓存中读取速度极大地加快了。它使得那些经常变化的界面能被缓存更短时间。

前端优化:

利用 Grunt,我们优化了我们的代码,减少了 http 请求,现在我们的文章页包含被同步下载的三个压缩了的 css 和 js 文件,相比以前的80多个没精简的文件,这是一个显著的改善。在网页的底部,我们使用 RequireJS 异步加载多个文件进行前端渲染。无 Cookie 的 CDN 和缓存HEAD 的设置使得我们的读者将下载更少字节的代码。配合 Varnish 系统,如今我们打开一篇文章能控制在500-1000毫秒之内。

所有的js 都可能造成阻塞,所以最大的性能改进来自于广告的异步加载。广告是令人头疼的,我们不能简单地直接将代码添加到 DOM 之中,而不担心页面的内容被覆盖。相反,所有的广告必须在 iframe和 Content 载入完毕后才进行加载,以避免导致页面渲染的潜在问题。

开发的过程中我们还使用了图片 sprites,我们所有的图片都存在一个叫 sprite-me 的文件夹中,配合 grunt 和 less 我们可以很方便地生成和使用不同的图标和图片,确定图像的 postion 位置。最后,我们使用 Underscore 编译的 HTML 模板,所以他们可以容易地”required”,并迅速地渲染出来。

总结:

如今我们的新平台包含了更强大的发布和互动功能,我们还在不断地改进这个平台,不断地迭代。这个新平台也让我们的团队能更加敏捷地进行新的学习和开发。尽管我们还有很多遗留技术问题,但是我们已经建立了一个值得依赖的技术团队,相信以后大家能更好地开发解决问题。

下一次,我们的团队的其他开发者将深入介绍这次重构使用的这些技术,从 Websockets 到 php 框架,尽请期待。

译者 @罗罗磊磊

本译文在 Google doc 上公开,如果您发现某些翻译的错误、不妥,或对某些语句有更好的翻译,欢迎修改和润色。
https://docs.google.com/document/d/1kEGcSm6AiUBgsPKDiHo0FJYGhEtNElA5Iagizy2vA1Q/edit?usp=sharing

转自: http://jianshu.io/p/0c233a30716c

相关 [纽约时报 网站 web] 推荐:

纽约时报网站改版背后的web技术

- - 学习笔记
原文地址: "The Technology Behind the NYTimes.com Redesign". 纽约时报英文网站今年进行了一次改版,这次改版不仅仅是给一艘大船重新刷了遍油漆那么简单,除了外观上的重新设计,我们也对代码进行了大量的重构,采用了新的框架,让网站更快,也为以后代码的维护、升级便利性进行了重新设计.

纽约时报:准时的困扰

- adamzhu1986 - 东西
日本,尼崎--在这个世界的任何地方,一辆火车晚点90秒钟也许都会被视作准时. 但是在日本,90秒钟是会造成耽搁的,因为那些依赖火车以芭蕾舞的精度彼此衔接的乘客往往保留出来的换车时间只有几分钟. 因此,在日本西部,一个23岁的列车司机为了补上晚点的90秒,在加速驾驶时,列车在一段弯道上脱出轨道后猛撞在了一幢九层的公寓楼上,这件事发生在周一早晨.

【纽约时报】“悍妇”邓文迪

- Kunshou - 东西
伦敦——在令人精疲力尽的英国国会听证会上,表现最好的默多克家族成员既不是老鲁道夫·默多克,也不是他的儿子詹姆斯,而是他的妻子邓文迪. 在两个小时激烈的质询过后,一位反对者突然冲到听证席前,企图用一个抹着刮胡膏的纸餐盘袭击八十岁高龄的默多克先生. 正是这位42岁的默多克太太,在听证室里暴起保护了她的丈夫.

【纽约时报】2011最佳iPhone应用

- - 东西-科技
2011最佳iPhone应用. 对于iPhone用户来说,2011年涌现了大量的新应用,但是他们在许多情况下仍难以超越去年的最佳应用. 所以与其发布一个从2010年算起的应用排行榜,还不如只把2011年新出现的应用放在这个排行榜上. 如果你想使你的手机得到更加有趣和实用的应用,那么应该把这次的排行榜和去年的精选放在一起来挑选.

十问Web网站项目

- - 博客园_新闻
英文原文: 10 Important Questions to Ask About Your Next Website Project. Ltd 开发者 Richa Jain 在本文中为我们带来了一个有趣的话题:在一个 Web 网站项目中,我们应该问自己十个这样的问题. 如果你在开发的过程中存在疑惑,或许你可以在本文中获得帮助.

纽约时报:一辆自行车与一种读书习惯

- Rooney - 东西
麦乐·麦来(Maile Meloy)“Both Ways Is the Only Way I Want It.” 的作者. 她第一本童书, “The Apothecary,” 将于今年10月出版. 当年我10岁,正在蒙大拿快乐成长,那时候我可想有一辆十段变速的自行车啦. 我老爸顺势和我做了一笔“交易”:如果我读完十部经典名著,并且读完每一本都写读书报告上交,那么他就买一辆十段变速自行车给我.

纽约时报:坐直了,你的腰会感谢你的!

- Weiye - 东西
每个人都想避免背部问题,但是令人吃惊的是很少有人成功摆脱它的纠缠. 八成的美国人在他们一生中的某个阶段都会经历背部疼痛,每年都会有15%的成年人因腰间盘突出、椎管狭窄或者腰痛等问题接受治疗. 可是,治疗背部疼痛既非常困难又十分昂贵. 达特茅斯医学院骨外科导师布鲁克·I·马丁说:“治疗方式多种多样,然而我们对特定患者却没有足够的技术达到最好的效果.

数据可视化之美——《纽约时报》的一天

- afanso - 《程序员》杂志官网
文 / Michael Young,Nick Bilton    译 / 祝洪凯,李妹芳. 你是否曾经想过《纽约时报》网站的读者会涵盖什么类型的人. 我们还在想他们倾向于在一天之中的什么时候来访问网站,使用什么工具访问以及他们都来自哪里. 从他们是谁到在什么时候、以什么方式以及为什么等,所有这些问题都在我们的思考范围之内.

纽约时报:十年前的英雄搜救犬(图集)

- UO - 译言-每日精品译文推荐
来源纽约时报:十年前的英雄搜救狗(图集). Moxie,13岁,来自马萨诸塞州,温斯罗普. 9月11日到达世贸中心,第二天开始工作. 尽管她之前的训练内容是搜寻生还者,但是在那儿工作的八天时间里,共认出了6具尸体及许多肢体残骸. 7岁退休后,开始捕猎,在江边度过时光. Orion,13岁,来自加州,瓦卡维尔.

纽约时报——什么是富裕国家?

- JSEU - 译言-每日精品译文推荐
来源The Haves and the Have-Nots - NYTimescom. I had a review this weekend about “ The Haves and the Have-Nots,” a new book by the World Bank economist  Branko Milanovic about inequality around the world.