高性能之应用层优化
不要使用web服务器来做静态内容服务,或者减少和动态服务使用不同的实例。
请求一个css文件或图片没必要用一个固定占用50或100M的线程。
用静态内容服务器做代替,Nginx,lighttp
使用缓存代理服务器,比如squid或varnish,esi(edge side includes)将部分页面中小块的动态内容潜入到静态缓存中
缓存过期策略,
主动缓存,将请求转发给应用服务器生成缓存squid
被动缓存,要么有要么没有,memcache
应用层缓存
本地缓存,一个变量或者哈希表
本地共享内存缓存
分布式内存缓存,memcache,适合存储共享对象,需考虑一致性问题
磁盘上的缓存,持久化对象
缓存控制策略
TTL(time to live),清理进程负责删除
显示失效,写失效,标记缓存数据已经过期;写更新,更新缓存时替换缓存项
读时失效,相比显示失效可以做避免出现负载冲高和延迟增大。通常采用版本控制
缓存陷阱,假设缓存命中率百分之九十,突然失效,会导致数据库压力,所以缓存设计需考虑高可用