一 客户端缓存
通过响应浏览器的header信息 通知浏览器做缓存,比如Etag Cache-control Expires Age 属性
以php代码为例
header("Expires: " . gmdate("D, d M Y H:i:s",time()+$ttl) . " GMT");
注意一个问题 http是无状态的,如果有session 则浏览器无法缓存
?
尤其是网站的静态资源,比如图片 css js ,合理的配置响应头信息,会有明显的作用
二 服务器端缓存
1 动态内容加速
1)业务级别的优化,比如缓存sql语句执行的结果。
举个例子,有一个信息列表
select * from item where state_id =1;
另外这个页面中还有其他sql执行
select * from item where item_id =111; select * from item where item_id =112; select * from item where item_id =113;
可以将第一条结果数据缓存放入数组,那么下面三条中如果111,112,113在上面缓存中的话,可以避免该查询。
2)Mysql 数据库缓存
优化Mysql配置来达到缓存的目地
3)缓存整个组件
将页面分成不同的区块组件,将整个区块的输出结果都缓存,比如一个页面有个“类似新闻”。可以将整块内容缓存一段时间,避免每次查询消耗。
比较常用的缓存手法是使用redis memcached等放入内存。
2 动态脚本加速
可以通过APC 或者HIPOP 缓存Opcode
具体配置可以参见 http://php.sinaapp.com/manual/zh/book.apc.php
3 web服务器缓存
可以通过Nginx Vanish Squid配置缓存
三 CDN代理缓存
使用CDN 加速网站访问,效果非常显著,尤其是在跨运营商环境因素下。国内比较知名的cdn服务商有 chinacache chinacenter