课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
为了能够给用户一个良好的上网体验,大部分的网页和浏览器都配置了预加载以及缓存功能。今天我们就通过案例分析来了解一下,关于web缓存的基本定义与类型介绍。
Web缓存是什么?为什么要使用缓存?
Web缓存处于服务器(也称为源服务器)和客户端之间,监视请求并保存响应的副本,比如HTML页面,图片和文件等(统称为表述)。如果之后有对同一个URL的新请求,它会使用自己保存的内容来响应,而不是再次请求源服务器来获取内容。
使用Web缓存主要有下面两个原因:
减少延迟——因为响应请求的内容来自缓存(距客户端较近)而不是源服务器,它会花较少的时间来获得表述并将他们呈现出来。这使得Web看起来具有良好的响应速度。
减少网络传输——由于复用了表述,它可以减少客户端使用的带宽总量。如果客户需要为流量付费,这就意味着省钱。缓存会降低对带宽的要求,也降低处理难度。
Web缓存的种类
浏览器缓存
你在查看现代Web浏览器(比如IE、Safari或Mazilla)选项的时候,可能会看到“缓存”设置。这个选项让你配置一部分硬盘空间来保存你看过的表述。浏览器缓存的规则相当简单。它通常会在一次会话(即当前浏览器中一次调用)中检查表述是否新。
这个缓存在用户使用“回退”按钮或者点击一个浏览过的链接时会特别有用。而且,如果你在网站的各个页面中浏览相同的图片,他们几乎能马上从缓存中加载出来。
代理缓存
Web代理缓存的工作原理相同,但规模更大。代理以同样的方式为成百上千的用户服务;大公司和ISP常常把代码缓存建立在防火墙之上,也可能是以独立设备的形式存在(也称为中间设备)。
代理缓存即不是客户端的一部分,也不是服务器的一部分,而是在网络之外,必须以某种方式把请求路由过去。其中一种方式是手工修改浏览器代理设备,指定要使用的代码;另一种方式是拦截。拦截式代理会根据其自身的基础网络重定向Web请求,不需要在客户端配置,客户端甚至不知道它们的存在。
代理缓存是一种共享缓存,通常不只是一个用户,而是大量用户在使用代理缓存。正因为如此,他们特别擅长降低延迟和网络传输量。这是因为众人都需要的表述会被多次重复使用。
网关缓存
网关缓存又名“反向代理缓存”或“替代缓存”。网关缓存也是一种中介,它他们不是由网络管理员部署以节约带宽,而是由网站管理员自己部署,使其站点更具伸缩性、可靠性以及拥有更好的性能。
很多方法都可以把请求路由到网关缓存,但常见的方法是使用负载均衡器让他们对于客户来说,看起来就跟源服务器一样。
内容分发网络(CDN)在整个Internet(或它的一部分)中分发网关缓存,并将其出售给对此感兴趣的网站。
Web缓存对我有坏处么?我为什么要帮助它们?
Web缓存是互联网中误解深的技术之一。因为代理缓存可以隐藏使用网站的用户,所以网站管理员特别害怕失去对他们的站点的控制,这会使得他们很难去知道是谁在使用他们的站点。
然而不幸的是,即使没有Web缓存,网络上也有非常多的因素可以保证管理员精确的知道一个用户如何使用他们的站点。如果这是你非常关注的问题的话,这篇手册将会指导你如何在站点没有不友好的缓存机制的情况下获取你需要的统计信息。
Web缓存是如何工作的?
所有的缓存都有一系列用来决定什么时候从缓存中提供内容的规则。如果可能的话,其中的一些规则被放置在了协议中(HTTP1.0和1.1),而另一些则由缓存的管理员(诸如浏览器缓存的用户,或者代理管理员)来设置。
通常情况下,下面列出的这些规则是常用到的规则集(不用担心你不了解规则的详细嘻嘻,之后会详细地对这些规则作出解释):
如果响应的头部通知缓存不要保存当前响应内容,那么缓存就不会缓存当前响应。
如果是一个授权的或者加密的请求(例如HTTPS),那么共享缓存将不会保存相关数据内容。
在下述场景中,我们认为被缓存的内容是新的(意味着不需要源服务端的检查就可以被发送给客户端),故而数据内容会直接从缓存中提供且不需要源服务端的校验:
缓存内容由过期时间或者其他的生存期控制机制,且缓存内容仍在生存有效期内;
如果缓存服务近期对外提供了数据内容,且该内容在很久之前就被修改了。
如果内容已经过时了,源服务端会要求对其进行验证,或者通知缓存服务这份缓存的内容是否仍然有效。
在类似于网络中断这样的场景中,缓存可以对外提供过时的响应数据而不必和源服务器进行校验和确认。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。