一 客户端缓存

通过响应浏览器的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