构建高性能的web站点
Http的过程及步骤:
1、域名解析
2、建立连接
3、发送请求
4、等待响应 (服务器处理)
5、接收数据 (网络传输)
针对性优化
1、 通过选择热的域名解析服务器或者设置TTL(就是一条域名解析记录在DNS服务器中的存留时间
2、受带宽,网络影响
3、本地cookie 会被上传到服务器,设置cookie的Domain可以防止一些不必要的网络传输。
4、后台优化篇
5、从接收数据到浏览器渲染响应,此阶段为前端优化的重要战场 。
前端优化主要手段:(代码方面)
1、 减少请求数:合并js文件,合并css文件,合并图片,利用css sprite技术,静态文件缓存。
2、 减少请求内容大小:HTML,JS 压缩,Gzip压缩。
3、 CSS 写在页面顶部,JS写在页面底部:原因(浏览器解析JS的时候会等其执行完毕后,再执行后续解析。IMG,CSS,其它HTML标签则不会)
4、 图片并且下载,利用多个图片服务器,充分利用浏览器的多连接(IE6:2,IE7-9:6,Firefox,Chrome:6),一般4个。
5、 避免使用css表达式,小心处理客户端代码减少 浏览器 repaint ,reflow
架构优化
1、 利用多线路CDN
2、 nginx 对于静态文件能更好的处理并发
3、 负载均衡
4、 反向代理服务器
5、 分布式文件系统
本地缓存
1、 设置Response 的 Last-Modified,通过接受 If-Modified-Since 文件是否需要从服务器返回最新内容,ResponseStatus=304 意味着告诉浏览器,可以使用本地缓存。
2、 设置Reseponse的max-age(缓存时间以秒为单位)或者 Expires(过期时间) 之后,浏览器不用询问服务器可直接使用本地缓存,意味着无需要建立连接。
服务器缓存
1、 Membercache
数据库优化
1、 数据库镜像(读写分离),会带来数据同步的问题。
2、 垂直分割
3、 水平分割
分割之后,去哪一个数据服务器读写数据成为最大的问题。
4、 SQL查询语句优化,索引优化。
a) 聚集索引
在物理上的位置是连接的,不会频繁更新的字段,经常被用来查询的,作范围查询的字段。会影响数据写入的速度,每一次写入数据位置会重排。
b) 非聚集索引
在逻辑上位置是连续的。
c) 复合索引
5、 SQL锁
1、域名解析
2、建立连接
3、发送请求
4、等待响应 (服务器处理)
5、接收数据 (网络传输)
针对性优化
1、 通过选择热的域名解析服务器或者设置TTL(就是一条域名解析记录在DNS服务器中的存留时间
2、受带宽,网络影响
3、本地cookie 会被上传到服务器,设置cookie的Domain可以防止一些不必要的网络传输。
4、后台优化篇
5、从接收数据到浏览器渲染响应,此阶段为前端优化的重要战场 。
前端优化主要手段:(代码方面)
1、 减少请求数:合并js文件,合并css文件,合并图片,利用css sprite技术,静态文件缓存。
2、 减少请求内容大小:HTML,JS 压缩,Gzip压缩。
3、 CSS 写在页面顶部,JS写在页面底部:原因(浏览器解析JS的时候会等其执行完毕后,再执行后续解析。IMG,CSS,其它HTML标签则不会)
4、 图片并且下载,利用多个图片服务器,充分利用浏览器的多连接(IE6:2,IE7-9:6,Firefox,Chrome:6),一般4个。
5、 避免使用css表达式,小心处理客户端代码减少 浏览器 repaint ,reflow
架构优化
1、 利用多线路CDN
2、 nginx 对于静态文件能更好的处理并发
3、 负载均衡
4、 反向代理服务器
5、 分布式文件系统
本地缓存
1、 设置Response 的 Last-Modified,通过接受 If-Modified-Since 文件是否需要从服务器返回最新内容,ResponseStatus=304 意味着告诉浏览器,可以使用本地缓存。
2、 设置Reseponse的max-age(缓存时间以秒为单位)或者 Expires(过期时间) 之后,浏览器不用询问服务器可直接使用本地缓存,意味着无需要建立连接。
服务器缓存
1、 Membercache
数据库优化
1、 数据库镜像(读写分离),会带来数据同步的问题。
2、 垂直分割
3、 水平分割
分割之后,去哪一个数据服务器读写数据成为最大的问题。
4、 SQL查询语句优化,索引优化。
a) 聚集索引
在物理上的位置是连接的,不会频繁更新的字段,经常被用来查询的,作范围查询的字段。会影响数据写入的速度,每一次写入数据位置会重排。
b) 非聚集索引
在逻辑上位置是连续的。
c) 复合索引
5、 SQL锁
浙公网安备 33010602011771号