1. Web端
1) 富客户端 - 客户端缓存,expire etag
2)Load on demand
3) 集群
- DNS分发
- R_proxy
-JK
- session共享或者复制,粘性session或者非粘性session
4)CDN分发和Cookie隔离
5) SSI, ESI and CSI
6) IP 分发
- NAT 强大的反向代理,集中控制,
- IP-Tuning - 路由
- DR 同一网段
7)减少模板大小
– 压缩空白字符 - 程序的DWR?
– 合幵相同数据 - 很多循环丢到客户端用javascript去做
– 异步渲染,利用专用服务器的优势
- Char to Byte
2. 服务器端
1) 禁用session
2) 读写隔离
1) 数据库级读写隔离 - 所有client都写,多个client支持读
2) 应用级读写隔离 - multiple data source in hibernate
- 只读情境下的不用锁 ( HQL, list )
- 编辑时乐观锁和悲观锁使用 (load, get, iterator)
3) 应用cache
1) Hibernate一级cache
2) 二级cache - 同步问题?
4)灵活运用异步处理
- 少用全局事务
- 非核心更新使用JMS机制,注意核心更新和JMS事务
5)合理的事务级别:
- 串行事务 - 避免
- 可重复读 - 如果写操作中不包含其他的读锁操作
- 读commit - 如果写操作中不包含本身写锁操作
- 读脏数据 - 脏数据处理
6) Java小心处理强应用,尽量使用弱引用(soft, weak),小心处理图,树的内存释放,小心finalize的处理
3. 数据库级
1) 建立索引,尤其是外键关联,前导列一定要是使用最频繁的列。
2)少用游标,push down logic to store precudure
3)SQL语法
- in 内存操作,exsit DB操作
- count(*) 代替 count(1)
- group by 和order by
- union all如果你比较确定,比union好
- is null对于索引无效