http://www.ibm.com/developerworks/cn/web/wa-aj-cache/
以下是一种用于计算浏览器响应时间的基本方法:
- 浏览器响应时间 = 服务器端时间 + 页面加载时间 + 浏览器呈现时间
- 页面加载时间 = (请求数 / 并发数)* 延迟时间 + 页面总大小 / 带宽
在上述等式中:
- “服务器端时间” 是指服务器端处理所花费的时间,比如通过 LDAP 验证和从数据库检索信息。
- “浏览器呈现时间” 是指浏览器呈现页面所花费的时间,包括执行 JavaScript 和解析 DOM 树的时间。
- “请求数” 是指 HTTP 请求的数量。
- “并发数” 是指浏览器与服务器之间的并行连接的数量。
- “页面总大小” 是指一个页面的完整大小。
- “延迟时间” 和 “带宽” 是网络状态指标。在常见的长距离网络环境中,带宽大约为 1M,延迟时间大约为 100 毫秒。因此,减少到 100KB 或减少为一个请求能够节约 0.1 秒响应时间。
请注意一点,鉴于真实环境的复杂性,这个等式可能不能涵盖所有情形。
在一个典型的 Web 2.0 富 Internet 应用程序(例如 Lotus Mashup Maker)中,浏览器首先发送格式定义请求到服务器。接收到定义响应数据后,浏览器向服务器发送数据请求。然后,浏览器对用户呈现页面。在这种模式中, 有大量的小项目请求,比如 JavaScript 文件、CSS 文件等。在长距离网络环境中,这会导致严重影响用户体验的客户端性能问题。大多数文件是可以被缓存的静态文件,因此,如果您添加适当的缓存控件、 expiry 头部以及其他影响浏览器缓存的头部元数据,就可以明显改善用户体验。
由于不同浏览器的复杂性,适当的缓存设置非常重要。在本文中,我们介绍了以下最佳实践:
- 尽可能多地缓存文件,以便减少加载次数并改善性能。
- 尽可能使用 cache-control 定义缓存行为,尤其是对 IE。这降低了不同浏览器之间的差别,是改善性能的最佳方法。
- 不要使用 “no settings related with cache”。
- 使用默认设置初次打开 IE 时,IE 浏览器几乎总是发送一个请求到服务器端以检索数据。
- 如果某个页面不应该被缓存,则使用 “cache-control: no-cache, no-store” 来确保该页面不会被缓存,尤其是当数据涉及安全或敏感信息时。
- 除非必要,不要使用 post 请求,因为它不能被缓存。