持续部署单页应用的7大技巧

【编者按】本文作者为 Parker Selbert,主要介绍高效部署静态托管应用的7大技巧,助你实现持续、安全且高效的交付流程。本文系国内 ITOM 管理平台 OneAPM 编译呈现。

单页应用不仅能提供非常丰富的用户体验,而且为持续开发开辟了一个完全不同于以前的新途径。将前端应用从服务器分离,从而简化团队职责的划分,是非常合理的策略。维护一个单独的前端代码库,允许团队通过 API ,快速迭代应用特性、改善交互功能。

然而,交付静态资源的过程并不都是如此顺利的。在开始持续部署静态资源之前,你的团队必须注意托管和交付中的陷阱。 以下是一些有关高效部署静态托管应用的技巧,帮助你实现持续、安全,以及最重要的,高效的交付流程。

1. 使用最先进的打包和部署工具

如果你的团队已经决定单独部署客户端和服务器代码,很有可能的是,服务器并不是使用Node.js语言编写的,但这并不能阻止你使用 Node.js 和 NPM 来构建和管理应用程序!你可以自由使用最先进的打包和开发工具,而不用管服务器端采用了什么框架。

一旦你的构建和测试过程不受服务器框架限制,也就释放了交付过程。一旦前端应用通过了集成测试,CI 服务器就可以构建一个正式版(参见技巧2),直接交付并进行发布(参见技巧5)。

2. 缩小,压缩和源映射(Source Maps)是必不可少的

部署一个单页应用远不止上传级联码到服务器这么简单。你在为生产环境的 Web 框架部署资源时,一定会精打细算地节省字节数,部署单页应用也是如此,需要同等的注意力与投入。这意味着单页应用必须尽可能缩小压缩,并包含 源映射(source maps)

任何主流的 JavaScript 构建工具,再加上少量的脚本,都能帮助你交付出最优化的应用。

3. 优化代码和样式交付

鉴于最近的趋势是将视图组件与样式定义放在一起,这一点可能稍有争议。但是,你需要权衡样式和代码捆绑后的利弊。

通常,浏览器可以并行下载 CSS 和 JS 文件,降低第一次加载后的绘制时间。如果所有的资源都捆绑在一起,是不可能提升性能的。当所有的样式和代码都捆绑在一个大文件内,客户只能盯着空白的屏幕,等待资源下载。

虽然多个文件会使交付过程稍显复杂,但文件缩小后带来的性能优势是值得我们这样做的。

4. 单独交付资源包

除非你是个极端的纯粹主义者,每个打包应用都应该是由库模块和应用代码组成的。通常,你的应用代码比库模块更改得更为频繁。当你提供巨大的级联包时,客户端被迫下载每一次更新,哪怕改动很小。应用程序包通常推送3MB 的数据量,这又需要下载大量的代码,而仅仅是因为几行应用代码的更改。

为了避免这个问题,你应该将应用程序分成至少两个资源包:一个包含级联库代码,另一个包含应用代码。未来如果实现 支持连接并行的HTTP / 2 协议,单个文件可以并行发送,这样的部署就不再必要了。但是现在,资源包的分割将加快用户获得每个新发布版本的速度。

5. 善加利用内容分发网络(CDN)

使用内容分发网络发布静态应用。只要保留语义缓存,CDN 就允许客户端继续指向相同的 URL。此外,在发布新代码时,即使缺乏资源指纹,也支持执行主动失效。主动失效会更新每个边缘服务器(也就是向客户端发布应用的服务器)上缓存的应用版本。

要注意的是,主动失效可能延时,在 Amazon CloudFront 上需要 10分钟或更多时间。这一不可预知的异步行为,是发布版本时需要额外留意的。

6. 连续性面前没有版本

不要期望用户会重新加载浏览器。假设一些用户会运行旧版本的应用,并做好准备,处理一些已弃用功能的请求。将版本发布看作是一个连续的变化,并决定你的发布周期。

总会某一阶段,继续支持所有旧版本及它们可能包含的各种错误,是不切实际的。除非你部署的是一台自助服务机,更新周期非常不频繁,你可以放心地假设用户会每周重新加载一次。

7. 逐步推出功能

使用功能标记逐步推出新功能。Ember 技术就是一个很好的例子,可以将功能和代码相绑定,但它是默认禁用的。代码在运行时动态产生,但是大多数人并不使用它。一旦通过测试人员或一小部分用户的测试,你就可以发布包含这一功能的新版本。

在发布服务器端代码时,通常也会使用同样的方法,但是静态托管单页应用的风险更高。循序渐进的方法是至关重要的,因为回滚代码的速度取决于 CDN 的失效期。这意味着你若是发布了一个错误版本,它至少在生产环境中运行10分钟以上,而无法立即撤销。

应用资源和服务器代码若是绑定,部署单页应用就变得既简单又稳定。此外,你可以利用原生JavaScript 工具的优势,而不管应用框架是什么。核心是,服务器/浏览器的关系是一个简单的分布式系统。通过在服务器端单独部署单页面应用,你的团队可以获得微系统架构带来的灵活性,专注度以及优先度。

本文转自 OneAPM 官方博客

原文地址:http://blog.codeship.com/continuously-deploying-single-page-apps/

时间: 2024-10-30 03:46:36

持续部署单页应用的7大技巧的相关文章

自助建站 seo-如何做单页seo,做单页网络推广用处大吗

问题描述 如何做单页seo,做单页网络推广用处大吗 如何做单页seo,做单页网络推广用处大吗 因精力有限,服务器费用预算有限,故打算做单页seo,我是指英文seo,面向国外市场 解决方案 看你选什么关键字了,单页无所谓,你外链多,特别是pr高的网址有外链,首页什么的指向你这个单页肯定可以提高搜索排名

require简单实现单页应用程序(SPA)_javascript技巧

写了一个测试代码,用require.js配合它的一个插件text.js实现了最简单的单页应用程序,简单的记录一下,方便以后复习, git地址:https://github.com/lily1010/requireSPA 下面来看一下目录 从上面项目可以看出,我将css单独抽离出去,实现了按需加载,即加载test1.html时会加载test1.css,加载test2.html时会加载test2.css. 一 先来看入口index.html代码 <!DOCTYPE html> <html&g

H5用户注册表单页 注册模态框!_javascript技巧

本实例为大家分享了H5表单验证新特性,如何用户注册表单页,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>用户注册表单页</title> <style> #form_content{ width:600px; margin:0 auto; position:absol

如何做好网站的单页优化

什么是单页优化?如何做好单页优化呢?单页优化指的是布局很简单的静态页面.在互联网初始阶段,大多数网站以单页的形式存在,因为单页寻在很大的缺陷,伴随着互联网的发展,逐渐退出了人们的视野,但是随着淘宝客等网站的兴起,单页优化再次出现在人们的视野中. 单页优化一定要有一定质量的内容支持和权重导向之下才有可能把排名做上去.单页优化在现在网站优化市场如火如荼的年代,有一定的难度,不过方法是死的, 人是活的,把一两种优化手段做到极致,往往最简单的方法就是最有效的方法.比如淘宝客很成功的案例,美丽说.蘑菇街等

掌握单页网站设计的5大技巧

  的确,单页设计已然是网页设计的大趋势了.许多流行的设计元素和设计方法都逐渐与这种网页设计手法融合到一起,越来越多的设计师和企业机构开始选择单页网站作为他们沟通世界的门户,而用户也开始接触越来越多的形式多样的单页网站. 但是在很久之前,在单页网站还非常简单的阶段,很多人都认为这是一种非常Low的网页设计方式,直接粗暴如同商业名片一般的网页结构怎么看都和高大上没有血缘关系,谁又会想到这种设计方式在今天会如此流行呢?在设计师们的不懈探究之下,单页设计已经摘掉了混乱单调的帽子,构建起了一套相对比较完

dom-关于HTML5单页应用浏览器压力问题,来大神帮忙看一下啊!!!

问题描述 关于HTML5单页应用浏览器压力问题,来大神帮忙看一下啊!!! 做了一个webapp HTML5单页应用 但是用到了好多监听touch事件的代码,同时监听8个Dom会对浏览器产生很大的压力吗? 解决方案 用代理机制啊,把这些DOM放在一个大容器里,监听这个容器的touch事件,用代码判断是里面哪个元素触发的,再执行相应操作

《单页Web应用:JavaScript从前端到后端》——第1章 第一个单页应用 1.1 定义、一些历史和一些关注点

第1章 第一个单页应用 单页Web应用:JavaScript从前端到后端 本章涵盖的内容 定义单页应用 比较最流行的单页应用平台:Java.Flash和JavaScript 编写第一个JavaScript单页应用 使用Chrome开发者工具查看单页应用 探讨单页应用对用户的好处 本书是为Web开发人员.架构师和产品经理而编写的,他们至少要有些JavaScript.HTML和CSS的经验.如果你从来没有涉猎过Web开发,本书就不适合你,但不管怎样还是欢迎购买.有很多非常不错的教初学者开发和设计网站

数据党证实:淘宝客API站已死单页站重新崛起?

淘宝客API站点,大家都不陌生.这种靠淘宝的API接口调用百万级数据而形成的站曾一度辉煌.曾几何时,有多少站长白天挂上API站,晚上数钱笑得乐呵呵.但随着使用API接口数据的人越来越多,API就那么一份,用的人却成千上万.最终,大量的同质化极严重的数据在互联网上面像泡沫一样.百度在6.28K站事件中,终于来了一场大清洗.淘宝客API站点是不是穷途末路了?现在的淘宝客都在用什么模式来做站? 我自己本身是一个淘宝客站群操作者.我需要清晰知道,在6.28K站事件之后,到底还有什么站可以站得稳,可以做得

什么是单页应用 单页应用对传统网站有哪些好处

什么是单页应用? 单页应用是指在浏览器中运行的应用,它们在使用期间不会重新加载页面.像所有的应用一样,它旨在帮助用户完成任务,比如"编写文档"或者"管理Web服务器".可以认为单页应用是一种从Web服务器加载的富客户端. 单页应用给传统网站带来的好处? 相对于传统网站,我们认为单页应用的主要好处是: 它提供了更加吸引人的用户体验.单页应用可以做到一举两得:桌面应用的即时性和网站的可移植性和可访问性. 单页应用可以和桌面应用一样渲染-单页应用只需要重绘界面上需要变化的