本文共 1972 字,大约阅读时间需要 6 分钟。
性能黄金法则:只有10%-20%的最终用户响应时间花在了下载HTML文档上。其余的80%-90%时间花在了下载页面的所有组件上。
实现技术:
CDN是一组分布在多个不同地理位置的web服务器,可以更加有效的向用户发布内容。
我们利用浏览器的缓存来改善网站性能,Web服务器使用Expires头来告诉web客户端它可以使用一个组件的当前副本,直到指定的时间为止,例如。
两外还可以用Cache-Control的max-age来指定组件缓存的秒数。例如:
文件名:添加缓存后,那么相应的组件更新时用户也获取不到新版本,为了解决这个问题可以在文件名中添加版本号。
通常的做法是用gzip压缩脚本和样式表。
为了避免白屏现象,请使用LINK标签将样式表放在文档顶部的head中,这样无论页面是在新窗口打开、重新加载还是作为主页,页面都是逐步呈现的。
HTTP1.1规范检疫浏览器从每个主机名并行下载两个组件,这样可以提高性能。但为了保证脚本正确的执行顺序,下载脚本时
不是并行的。因此脚本对web页面会有以下影响:
将脚本移到页面底部可以加速web页面。
CSS表达式允许动态设置CSS属性,例如
问题是表达式求值的频率过高,除了页面加载和改变大小外,当页面滚动、鼠标移动时都会重新求值。
解决方式:
如果纯粹比较javascript和css的内联外联的话,可能内联会快一些。但在实际应用时,由于外联文件可以被浏览器缓存起来,因此使用外部文件会产生较快的页面。
精简是从代码中移除不必要的字符以减小其大小,进而改善加载时间。常用的javascript精简工具有JSMin,DojoCompressor等。
重定向用于将用户从一个URL重新路由到另一个URL,实现重定向可能有很多原因,包括网站重新设计、跟踪流量、记录广告点击、建立便于记忆的URL等。但实际上重定向会使页面变慢,下面是几种常见的替代方案:
由于团队大小和脚本数量的影响,网站中的脚本是可能重复的,这可能导致不必要的HTTP请求和执行Javascript时浪费时间。要避免重复使用脚本,可以在模板系统中实现脚本管理模块,处理脚本的依赖性和版本。
ETag(Entity Tag)实体标签,是Web服务器和浏览器用于确认缓存组件的有效性机制之一。它是唯一标识了一个组件的特定版本的字符串,格式约束是该字符串要用引号引起来。例如:
如果网站时放在同一台服务器是没有问题的,但是如果使用了服务器集群,则组件的下载次数会增多,导致性能下降。
确保Ajax请求遵守性能指导,尤其应具有长久的Expires头。
转载地址:http://wxdqz.baihongyu.com/