摘要:导言本文将列举站点常用缓存技术的基本概念与特点,为想要了解缓存技术的读者们提供提纲式的技术介绍。这些指令指定用于阻止缓存对请求或响应造成不利干扰的行为。参考连接网站缓存技术总结高性能网站的关键缓存静态资源缓存
导言:本文将列举web站点常用缓存技术的基本概念与特点,为想要了解web缓存技术的读者们提供提纲式的技术介绍。
在互联网迅速发展的今天,一个互联网站点的请求量是十分惊人的,动辄上万的每秒请求数不仅会让服务器处于高负荷的环境中,对于数据库来说更是苦不堪言。而网页以及数据的读取速度的快慢,又会影响到产品的用户体验,灵活使用各种缓存技术对于提高服务器的可用性以及用户体验是至关重要的一环。
1. 使用缓存的作用存储频繁访问的数据
内存缓存减少磁盘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...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/61848.html
摘要:目前,我们看到的老蒋采用的部署的环境,在镜像中配置,于是我们会称作为。有没有一件傻瓜式安装工具脚本呢这里老蒋要推荐的来自国内比较老牌且一直更新维护的一键安装包,我们可以较为直观且无人值守的安装需要的网站服务器环境。如今我们建站较多的还是会选择VPS云服务器,很少会去选择虚拟主机,固然前者有很多的优点。不过相比虚拟主机不同的是,VPS云服务器需要我们自己配置WEB环境,而且我们较多的还是会选择...
摘要:缓存缓存,也叫网关缓存反向代理缓存。浏览器先向网关发起请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享,但却拥有更好的处扩展性。 一、前言 工作上遇到一个这样的需求,一个H5页面在APP端,如果勾选已读状态,则下次打开该链接,会跳过此页面。用到了HTML5 的本地存储 API ...
摘要:因为路由层面受业务影响很大,经常修改一些功能的行为,所以后来大部分测试都是针对层面的单元测试。在我了解的过程中,我发现中文网络上对的讨论非常分散,于是我创建了中文社区,到年末已经有个注册用户和个帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 从 2014 年末开始开发的一个互联网金融项目终于在今年三月份上线了,这是一个 Node...
摘要:因为路由层面受业务影响很大,经常修改一些功能的行为,所以后来大部分测试都是针对层面的单元测试。在我了解的过程中,我发现中文网络上对的讨论非常分散,于是我创建了中文社区,到年末已经有个注册用户和个帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 从 2014 年末开始开发的一个互联网金融项目终于在今年三月份上线了,这是一个 Node...
阅读 3448·2019-08-30 15:55
阅读 2050·2019-08-30 15:44
阅读 1453·2019-08-30 12:47
阅读 740·2019-08-30 11:05
阅读 1629·2019-08-30 10:54
阅读 654·2019-08-29 16:07
阅读 3566·2019-08-29 14:17
阅读 2221·2019-08-23 18:31