本章将略述能帮助您提高 web 应用程序性能的最佳实践。web
每一个 HTTP 请求都有开销,包括查找 DNS、建立链接及等待响应,所以削减没必要要的请求数可减小没必要要的开销。要减小请求数: 数组
mod_concat
模块。若是 httpServer 是 Apache,用 pack:Tag 做为 JSP 标签库来合并 JavaScript 和样式表文件。(pack:Tag 是一个 JSP-Taglib,可缩减、压缩及合并资源,如 JavaScript 和 CSS,并将它们在内容或普通文件中缓存。) 只呈现须要的组件;其他可等待。最好不要一次呈现太多组件。 浏览器
某些状况下,可以使用后置加载。因为浏览器可视区域外的组件能够后置加载,当这些组建进入可视区域不久后,初始呈现就会失效。 缓存
有些 JavaScript 能够在 onload 事件后后置加载,如 JavaScript 中初始呈现后拖动某个元素。 服务器
经过前置加载组件,能够利用浏览器的空闲时间请求未来会用到的组件(如图像、样式和脚本)。当用户访问下个页面时,若是大多数组件都已在缓存中加载,那页面加载会快得多。 cookie
有两种前置加载:网络
脚本可能会产生问题,由于它们可能会阻碍并行下载。当下载脚本时,浏览器不会再启动其余下载 — 即便那些位于不一样主机。将脚本,如样式表,放在底部,以保证它们在其余下载完成后再下载。 app
也可使用延时脚本,这只有 Internet Explorer 支持。DEFER
属性表示脚本不含 document.write()
。这就告诉浏览器他们能够持续呈现。 webapp
当浏览器发出对静态图片的请求,并随之发送 cookie 时,服务器不会使用那些 cookie。因为这些 cookie 只会形成没必要要的网络流量,确保用无请求来请求静态组件。而后使用子域和主机保存这些静态组件。 工具
现实世界中使用外 部文件一般会使页面运行更快,由于 JavaScript 和 CSS 文件被浏览器缓存。HTML 文档内联的 JavaScript 和 CSS 会在每次请求 HTML 文档时被下载。这减小了须要请求的 HTTP 的数量,但增长了 HTML 文档的大小。另外一方面,若是 JavaScript 和 CSS 在被浏览器缓存的外部文件中,就会减少 HTML 文档大小,而不会增长请求数。
YSlow 根据一组高性能 web 页面准则,经过检查页面上全部组件,包括由 JavaScript 建立的,来分析 web 页面性能。YSlow 是一个集成了 Firebug web 开发工具的 Firefox 插件;它可提供提高页面性能的建议、总结组件性能、显示页面统计数据并提供用于性能分析的工具。
图 3 显示的是 YSlow Grade 选项卡上的信息。
YSlow 的 web 页面创建在 22 条可测试的规则基础上,这些规则在下方按重要性和效果排列。研究显示,按照如下规则,web 页面响应时间可提高 25% 到 50%:
GET
进行 Ajax 请求。