构建高性能网站的14条法则

时间:2022-12-21 19:42:25

       一个好的网站,拥有漂亮的页面,丰富的内容对用户来说就够了吗?不一定,当你想打一个页面时,页面却迟迟打不开,页面一点点在加载过程,对于这样的一个“好”网站,再多的用户也会慢慢地流失。如何才能解决这种问题?怎么才能让页面快起来,给用户更好的体验?对于构建高性能网站,从服务器的配置、系统的架构和程序代码的优化都是至关重要的,但对于前端页面的设计也是构建高性能的关键,在《高性能网站建设指南 》中的有 14 条性能黄金法则:

一、 减少 HTTP 请求
1. 图片地图: 允许在一个图片上关联多个URL,目标URL的选择取决于用户单击了图片上的哪个位置。
2. CSS Sprities: 和图片地图一样,也可以合图片,这个概念就像是使用“显灵板”。要使用CSS Sprities,需要将多个图片合并到一个单独的图片中。
3. 内联图片
4. 合并脚本和样式表

二、使用内容发布网络(CDN Content Delivery Network)

如果应用程序 Web 服务器离用户更近,则一个 HTTP 请求的响应时间将缩短。另一方面,如果组件 Web 服务器离用户更近,则多个HTTP 请求的响应时间将缩短。通过CDN就可以很容易做到。CDN是一组分布在多个不同地理位置的 Web 服务器,用于更加有效地向用户发布内容。主要的CDN服务提供商 Akami、Limelig、SAVVIS等

三、为组件添加长久的 Expires 头
浏览器(和代理)使用缓存来减少 HTTP 请求的数量,并减少HTTP响应的大小,使 Web 页面加载得更快,Web 服务器使用 Expires 头来告诉 Web 客户端它可以使用一个组件的当前副本,直到指定的时间为止。当浏览器自到响应中有一个 Expires 头时,它会和相应的过期时间组件一起保存到其缓存中。只要组件没有过期,浏览器就会使用缓存版本而不会进行任何HTTP请求。
HTTP 1.1 引入了 Cache-Control 头来克服 Expires 头的限制。因为 Expires 头使用一个特定的时间,它要求服务器和客户端的时钟严格同步。另外,过期日期需要经常检查。
Cache-Control 使用 max-age 指令指定组件被缓存多久。它以秒为单位定义了一个更新窗。如果从组件被请求开始过去的秒数少于 max-age,浏览器就使用缓存的版本,这就避免了额外的HTTP请求。

四、压缩组件
从HTTP1.1 开始,Web 客户端可以通过 HTTP 请求中的 Accept-Encoding 头来标识对压缩的支持(Accept-Encoding:gzip, deflate),如果 Web 服务器看到请求中有这个头,就会使用客户端列出来的一种来压缩响应。Web服务器通过响应中 Content-Encoding 头来通知 Web 客户端。(Content-Encoding:gzip)
-----------压缩脚本和样式表----------

五、将样式表放在顶部

六、将脚本放在底部

七、避免 CSS 表达式

八、使用外部 JavaScript 和 CSS

九、减少 DNS 查找

十、精简 JavaScript

十一、避免重定向

十二、移除重复脚本

十三、配置 ETag

十四、 使 Ajax 缓存