web系统性能方案全面总结

jopen 11年前

全面列举下web系统中前后台用到的各种性能提升方案: 尤其适合PHP系统

只是列举了下, 后续慢慢来分开写吧, 很多东西我们已经用到了.

一. 服务器端: 

数据库层:

1. 数据库性能优化:(设计方案,索引,查询缓存,反范式化设计)
2. 使用NoSQL数据库(mongoDB, 这个OSC多的是)
 
逻辑处理层:
3. web压力测试(吞吐率, ab或者siege工具)
4. 动态内容缓存(文件缓存,APC缓存,扩展k/v缓存)
5. 静态化动态内容
6. 分布式缓存(memcache, redis)
7. opcode编译缓存(APC, xcache)
8. 浏览器缓存(Expire header)
 
宿主环境层(web服务器,Apache):
 
9. web服务器缓存(mod_disk_cache, mod_file_cache:文件描述符缓存)
10. 传输加速(apache:mod_deflate启用, php自主gzip压缩)
11. web组件分离 (均衡web负载, 最大化浏览器多线程下载)
12. xdebug瓶颈分析

二.前台:
 
1. Ajax
优化方案:
2. 减少http请求(多图合一, 合并静态组件, 图片延时加载)
3. 使用内容分发网络(和web组建分离类似, 激发浏览器并发, 分担web服务器负载)
4. 启动浏览器缓存(添加Expire头信息)
5. 压缩静态组件(等同服务器压缩传输)
6. 将css放在页面顶部
7. 将js放在页面底部
8. 避免css表达式
9. 外部引用js和css
10.减少DNS查询(DNS缓存,TTL设置, Keep-alive, 使用更少的域名, 同域名内静态文件加载使用/代替域名)
11.简化压缩静态js和css
12.避免重定向(这里指静态资源的获取过程)
13.去除多余的js
14.配置ETags
15.缓存ajax结果
16.DNS预取(<link rel="dns-prefetch" href="//预取域名">)
17.资源预取(内联img标签, <link rel="prefetch" href="图片地址">)
18.渐进的JPEG(导出jpeg图片时勾选对应选项)


三. 分布式:
1. web负载均衡(URL重定向, DNS解析, 代理服务器)

2. 内容分发与同步(组件分离限制突破)
3. 分布式文件系统
3. 数据库负载均衡(读写分离,垂直分区,水平分区)
4. 分布式计算(Gearman)