Web站点缓存技术小结

导言:本文将列举web站点经常使用缓存技术的基本概念与特色,为想要了解web缓存技术的读者们提供提纲式的技术介绍。html

在互联网迅速发展的今天,一个互联网站点的请求量是十分惊人的,动辄上万的每秒请求数不只会让服务器处于高负荷的环境中,对于数据库来讲更是苦不堪言。而网页以及数据的读取速度的快慢,又会影响到产品的用户体验,灵活使用各类缓存技术对于提升服务器的可用性以及用户体验是相当重要的一环。web

1. 使用缓存的做用

  • 存储频繁访问的数据redis

  • 内存缓存减小磁盘I/O数据库

  • 保存耗时的操做,以便下次使用浏览器

2. 网站缓存的分类

网站缓存按照存放的地点不一样,能够分为服务端缓存和客户端缓存。缓存

  • 服务端缓存服务器

    • 页面缓存网络

    • 数据缓存框架

    • 数据库缓存性能

  • 客户端缓存

    • 浏览器缓存

    • 代理服务器缓存

    • 网关缓存

3. 服务端缓存

若是一个web服务是计算密集型的,服务器内存或者CPU等性能很差,或者像web系统使用的是与他人共享的虚拟服务器,只能获得部份内存和CPU的时候,服务器的计算时间可能占整个页面响应时间的很大一部分。这种状况下,优化服务器端的缓存是一件很是重要的事情。

3.1 网页缓存

页面缓存是将动态页面直接生成静态的页面放在服务器端,用户调取相同页面时,静态页面将直接下载到客户端,再也不须要经过程序的运行和数据库的访问,大大节约了服务器的负载。

早期的网站不少使用发布系统来完成这个功能,在后台发布时将数据和页面模板整合成静态页面,存放在硬盘中。但这样的缺陷很明显,一是后台的程序的编写很复杂,二是缓存的控制只能经过人为的方式来控制,这对一些更新十分频繁的网站就是一个噩梦,网站可能在不停的作缓存的删除和重建。固然后来出现了一些自动更新这些缓存的框架,好比PHP的Smarty模板,能够定义缓存过时的时间,自动去更新这些缓存。这对一些信息发布类网站已经确实适用了。

除了整个页面的缓存技术,还有一种技术叫作“页面片断缓存”,将页面的部分而不是所有进行缓存。表明做有ESI Cache。

3.2 数据缓存

将从数据库查询的结果或是须要多服务器共享的数据缓存到内存或者文件中,以便再次访问同一资源时无需再次对数据库进行访问,提升请求数据的响应速度以及下降数据库的负载。

目前缓存的作法分为两种模式:

  • 内存缓存:缓存数据存放在服务器的内存空间中,如今经常使用的内存缓存有Redis以及Memcached。

    • 优势:速度快

    • 缺点:资源有限

  • 文件缓存:缓存数据存放在服务器的硬盘空间中。

    • 优势:容量大

    • 缺点:速度偏慢,尤为在缓存数量巨大时

3.3 数据库缓存

数据库的缓存通常由数据库提供,好比Oracle,能够对表创建高速缓存,提升对常常访问的数据的访问速度。对于查询操做远远多于修改操做的数据库,开启数据库查询缓存是颇有益的;可是对于修改操做不少的数据库,因为缓存常常失效,就起不到加速的效果。

4. 客户端缓存

客户端缓存,就是把缓存保存在除Web服务器以外的其余地方,加速同一客户端访问相同资源时的速度。

4.1 浏览器缓存

当浏览器访问一个站点的时候,网络链接是主要瓶颈,能够经过设置浏览器缓存来避免发起请求,或者仅进行极低流量的HTTP请求。设置浏览器缓存,一般有两个主要做用:

  • 对用户来讲,减小请求能够更快地加载页面,节省流量。

  • 对网站来讲,减小带宽压力和费用。

服务器经过设置请求返回的HTTP头,来通知浏览器按照服务器的要求进行响应的缓存。主要使用的HTTP头以下:

  • Expires: 过时时间。这种缓存是最快的,由于没有任何HTTP请求的发生。当用户须要这个资源的时候,浏览器就直接从缓存(在硬盘中)读取,再也不须要询问服务器端的意见。

  • Last-Modified: 最后修改时间。经过这种缓存方式,不管资源是否发生了更新,仍然至少会发生一来一去HTTPS头的传输和接收,因此速度比不上Expires。

  • ETag: 实体标签。和Last-Modified相似,也是WEB服务器和客户端用于确认缓存组件的有效性的一种机制。当资源被修改,其ETag也发生改变。ETag相对Last- Modified更精确,但在多服务器可能形成混乱。

  • Cache-Control: 缓存控制。这个字段用于指定全部缓存机制在整个请求/响应链中必须服从的指令。这些指令指定用于阻止缓存对请求或响应形成不利干扰的行为。好比:Cache-Control: max-age=3600, public

4.2 代理服务器缓存

代理服务器是一种处在客户端和服务端中间的服务器,而代理服务器缓存以共享缓存的方式保存着报文副本,能够减小客户端到原始服务器的长距离请求。因为代理服务器缓存是一种共享缓存;每每有大量的访问者使用,每一个副本被大量重用,所以,其在下降延时和网络流量上颇有用。

4.3 网关缓存

网关缓存也被称为“反向代理缓存”或“替代缓存”,存与上述代理服务器缓存大致相似,一样起着中介的做用。网关缓存通常是网站管理员本身部署,让他们的网站更容易扩展并得到更好的性能。

5. 总结

本文简单的列举了Web站点经常使用的缓存技术的分类以及简要的说明,对于不一样的生产环境,每每会采起多样的缓存方案,提升整站的可用性以及用户体验。只有对各个缓存技术都有更深刻的认识,才能设计出一套更优秀的缓存方案。

参考链接
1. 网站缓存技术总结( ehcache memcache redis): http://2277259257.iteye.com/b...
2. 高性能网站的关键-缓存: https://www.cloudxns.net/Supp...
3. HTTP静态资源缓存: http://www.cnblogs.com/ivanfu...

相关文章
相关标签/搜索