原文:Best Practices for Speeding Up Your Web Site
20 分域部署部件:Split Components Across Domains
tag:分域部署
将部件分割能使你获得最大的并行下载效率。但你同时需要注意不使用多于2~4个域名,以避免DNS查询导致的问题。例如,你可以将HTML内容和动态的组建放于www.example.org域名下,将静态组件分别放于static1.example.org和static2.example.org之下。
查看Tenni Theurer和Patty Chi的"Maximizing Parallel Downloads in the Carpool Lane"获取更多关于并行下载的信息。
21 减少Iframe的数量 Minimize the Number of iframes
tag:Iframe
Iframes 能够使HTML文档被插入进父级文档中。首先需要明确iframe的工作方式,才能有效的利用这一形式。
<iframe>的优点:
- 对于第三方内容,比如广告,能够在不影响父级设计的情况下快捷插入。
- 提供安全沙箱,不影响父级。
- 能够并行下载脚本。
<iframe>的缺点:
- 即使是空的也会有消耗。
- 会锁住页面的onload事件。
- 不支持语义表达。
22 避免404错误 No 404s
tag:404
一个获得没用的404响应的HTTP请求对于宝贵的HTTP请求资源来说是完全不必要的,而且这样还会减慢用户的体验。
有的网站提供了有帮助的404错误信息,比如"你是否在寻找……?",这样虽然能提高用户体验,但同样浪费了服务端资源(比如数据库)。尤其不妙的是在请求一个外部的Javascript脚本文件失败时获得的一个404错误,因为这样不但会堵塞并行的下载,而且浏览器会尝试分析404响应的内容,来辨识它是否是有用的Javascript代码。
23 减少Cookie的大小 Reduce Cookie Size
tag:cookie
有多种理由让我们应用HTTP cookie,比如身份验证,或者个性化设置。Cookie中的信息在服务端和浏览器间被放在HTTP头中交换。尽量减少cookie的体积对减少用户获得响应的时间十分重要。
查看Tenni Theurer和Patty Chi的"When the Cookie Crumbles"获取更多信息。
- 去除不必要的cookie。
- 尽量减少cookie的大小。
- 留心将cookie设置在适当的域名下,避免影响到其他网站。
- 设置适当的过期时间。一个较早的过期时间或者不设置过期时间会更快的删除cookie,从而减少用户的响应时间。
24 为部件使用没有cookie的域名 Use Cookie-free Domains for Components
tag:cookie
当浏览其请求一个静态图片并一同发送cookie时,服务器并不需要这些cookie。这样只是毫无益处的创建了多余的网络流量。应当保证静态的部件在请求时没有携带cookie,所以需要把你的静态部件放在另一个子域名下。
如果你的域名是www.example.org,你可以将你的静态部件放在static.example.org中。如果你把cookie设置在顶级域名example.org上而不是www.example.org,那么所有发送至static.example.org的请求会包括那些cookie。在这种情况下,你可以买一个全新的没有cookie的域名来放置你的静态部件。Yahoo!使用了yimg.com,YouTube使用了ytimg.com,Amazon使用的是images-amazon.com。
将静态部件放于没有cookie的域名下的另一个好处是一些代理服务器会拒绝缓存有cookie的部件。于此相关的一点是,如果你怀疑你应该为你的首页使用example.org还是www.example.org,考虑cookie的赢下。省略www会让你不得不把cookie写到*.example.org下,所以考虑性能,最好使用www.子域名,然后把cookie写到这个子域名下。
25 减少DOM的读取 Minimize DOM Access
tag:javascript DOM
利用Javascript读取DOM元素很慢,所以为了获得响应更快的页面,你应该:
- 缓存被读取的元素的引用。
- 脱机更新节点然后把它们加回到树结构中。
- 避免利用Javascript定位布局。