码迷,mamicode.com
首页 > Web开发 > 详细

网站的缓存类型

时间:2015-10-09 13:43:28      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

缓存用的好,大大减轻服务器压力和提升用户体验。只要涉及到缓存,肯定会存在数据更新不及时的问题。下面分为3个级别来说,越往下,说明上一级的缓存不存在或者已经失效。

第一级,浏览器缓存

优点:

这是最省资源的一种方式,浏览器甚至都不需要发起请求。

缺点:

缓存脱离控制,如果缓存时间设置太长,用户无法访问最新的页面。特别出现一个紧急BUG的时候,需要一段时间,才能平息。

使用:

在header头部添加Expires, Cache-control: max-age, Last-Modified, Etag一个或者多个头部

html代码当中,可以在meta对缓存进行控制。

建议:

JS,CSS,图片可以把缓存时间设置长久一些,永不过期都可以。文件出现变化的时候,通过添加版本号进行更新。

HTML可以根据自己的更新的速度,来设置缓存的有效期时间。

第二级,CDN缓存–静态页面

 

根据智能DNS解析,用户访问到最近的一台机器,这样就可以减少网络延迟。

用户访问CDN,CDN上如果资源存在并且没有过期,直接返给用户内容,否则需要先访问源站,然后保存到CDN服务器上面,然后返给用户。

优点:

请求分散,消弱了高流量下的压力。

减少了网络延迟

缺点:

节点资源可能缓存不一致,导致不同的用户看到的结果不一样

如果设置过期时间短或者其他的不合理的回源策略,会导致大量回源,导致访问速度更慢

高并发期间,一个资源,可能同时会有多个回源请求

刷新CDN,需要一段时间,如果出现BUG的话,那也得等几分钟

第二级,proxy缓存–动态页面

很多代理服务器都支持了缓存,比如Nginx,Apache。一些动态页面或者接口不怎么更新,比如产品列表等,可以把内容缓存到服务器里面,下次请求的时候,直接读取缓存,动态脚本都不需要执行。动态脚本如果要返回的话,可能需要访问数据库,以及一些其他的服务,这就增加了响应时间。

使用:

nginx,可以配置proxy_cache

apache,配置mod_cache、mod_disk_cache、mod_file_cache 及mod_mem_cache

第三级,opcode缓存

是针对php代码。php执行的时候,需要先对php代码解释,生成中间代码,称为opcode,然后再执行。如果缓存住,就可以不需要每一次都解释,这样就可以节省不少资源,增加吞吐量。

优点:

节省资源,增加吞吐量

缺点:

代码更新,需要等待opcode失效。如果设置不过期的话,那就需要重启服务器。

opcode主要节省了CPU和内存资源,如果时间消耗主要是磁盘或者网络IO,那么作用不是太大。

第三级,文件缓存

会把计算或者从数据库,以及其他服务获得数据,放到一个文件里面,使用的时候取出来。常见的session就是这么做的。我看phpcms就大量使用这种缓存。

缺点:

多台服务器,数据缓存内容可能不一致。为了解决这个问题,曾经挂载共享代理,这就导致磁盘IO成为瓶颈。

设置过期时间,不太容易。

第三级,分布式缓存

为了解决文件缓存存在的问题,就出现了分布式缓存。常见的有memcache,redis.可以搭建集群,设置过期时间。redis,百度都把它当做数据存储来使用。这种缓存在互联网行业当中,大量应用。

缺点:

需要人维护,消耗大量内存,需要设置过期时间。

转载至 --万马奔腾 » 网站的缓存类型

网站的缓存类型

标签:

原文地址:http://www.cnblogs.com/leetieniu2014/p/4863635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!