高性能建站指南

《高性能建站指南》上次读是六年前在大学的时候,昨天下午有空重新读了一遍,因此留下笔记,加上了一些自己的理解

1、减少http请求

   图片地图,css sprites,内联图片,合并脚本和样式表

2、使用内容发布网络

  cdn,缩短用户和服务器之间的接收距离,降低中央服务器的压力

3、添加expires头

 能够在过期时间前运用缓存

  expires 定义静态资源的过期日期,缺点是要保持用户的系统时间和服务器的时间一致,

  max-age 优先级比expires高,定义还有多长时间过期,因此用户系统时间无不需要和服务器的时间一致

为组件添加长久的expries头

4、压缩组件(css、js)

客户端发送获取资源的request会带上 Accept-Encoding:gzip,deflate,请求的response返回 Content-Encoding:gzip,

主流浏览器都支持解压gzip压缩的文件,业界也主要使用gzip压缩文件,服务器压缩组件会增加服务器负载(细微得可以忽略?)

对应有些浏览器不支持gzip压缩,服务器会告知代理需要获取accept-encoding请求头来决定是否发送压缩的文件,Vary:Accept-Encoding

5、将样式表放在顶部

浏览器逐步呈现,因此尽早加载构建好css Tree能更快构建好RenderTree,减少浏览器白屏时间增强用户体验

@import引用的CSS会等到页面全部被下载完再被加载,不建议使用

使用Link标签将样式表放在head中

6、将脚本放在底部

同步(以script标签)加载脚本会阻塞后续资源加载,并且在浏览器解析js时候,会阻塞renderTree的构建

7、避免CSS表达式

CSS表达式容易导致页面性能开销大,因此要避免用

8、使用外部JavaScript和css

内联的JavaScript和css虽然减少了http请求开销,但是会导致JavaScript和css无法利用浏览器缓存

将JavaScript和css放到外部文件中

9、减少DNS查找

TTL(time-to-alive)告诉客户端对改记录保存多久,然而浏览器一般会忽略该值

开启keep-alive(个人觉得keep-alive主要是通过重用tcp/ip通道减少tcp握手时间,对DNS查找无多大相关影响)

通过使用keep-alive和较少域名来减少DNS查找

10、精简JavaScript(JavaScript、css)

对JavaScript源代码进行精简

11、避免重定向

寻找一种避免重定向方法

12、删除重复脚本

确保脚本只被包含一次

13、配置Etag

Etag即为文件的版本号,当文件超过了过期时间,浏览器会向服务器发起文件请求,若浏览器缓存文件的Etag和服务器一致,

服务器返回304,浏览器则会继续使用本地缓存文件,

不同的服务器对相同的文件的etag定义(inode-size-timestamp)是不同的,浏览器访问不同的服务器会导致相同的文件却无法通过Etag重用缓存

建议配置Etag,只包含大小和时间戳或只有时间戳,或者移除Etag(last-modified头可以提供等价信息),移除Etag可以减小http头大小

14、使用Ajax可缓存

确保ajax请求遵守性能指导,尤其应具有长久的Expires头

猜你喜欢

转载自www.cnblogs.com/peace1/p/9207494.html