# 9. 构建并部署高性能javascript应用

# js的HTTP压缩

  1. 当web浏览器请求一个资源时,它通常会发送一个Accept-Encoding HTTP头来告诉web服务器它支持哪种编码转换类型。这个信息主要用来压缩文档以获得更快的下载,从而改善用户体验。Accept-Encoding可用值包括:gzip,compress,deflage和identity。

  2. 当web服务器在请求中看到这些信息头,它会选择最合适的编码方法,并通过Content-Encoding HTTP头通知web浏览器它的决定。

  3. gzip是目前最流行的编码方式。它能减少70%的下载量,成为提升web应用性能的首选武器。记住gzip压缩主要适用于文本,包括js文件。其他类型,诸如图片或PDF文件,不应该使用gzip压缩,因为它们本身已经被压缩过,试图重复压缩只会浪费服务器资源。

# 缓存js文件

  1. web服务器通过Expires HTTP响应头来告诉客户端一个资源应当缓存多少时间,要将响应标记为永不过期,服务器可以发送一个时间为请求时间之后一年的Expires日期。

  2. iPhone上的Safari浏览器不会缓存解压后超过25KB的文件,而在iPhone3.0系统中限制为15KB。

# 处理缓存问题

  1. 适当的缓存控制能切实提升用户体验,但它有一个缺点:当应用升级时,你需要确保用户下载到最新的静态内容。这个问题可以通过把改动过的静态资源重命名来解决。

# 使用内容分发网络(CDN)

  1. 使用CDN的主要原因是增强web应用的可靠性、可扩展性。更重要的是提升性能。