缓存与浏览器缓存技术:
一,缓存:
缓存是网络传输中常用到的一种技术,利用缓存可以让我们在数据传输方面更加的方便和快捷。
1.1缓存的优点:
-
避免冗余的数据传输:
当很多的人去访问一个网站的原始服务器,此时原始服务器会为每个访问着者都发送一份相同的文本。这样就会浪费我们的网络带宽,同时使我们的原始服务器负载加重。假如使用了缓存,此时我们就可以在缓存服务器中备份一份文本,此时再有访问者访问就不用直接和原始服务器对接,让缓存去发送文本。这样可以减少我们的原始服务器的负载压力,同时可以避免一些不必要的数据传输。
-
缓解带宽瓶颈:
缓存还可以缓解带宽瓶颈。我们都知道在网络传输中,数据的传输速率会以路径中最小的的带宽来计算。而大多数的网络一般为本地网络提供的带宽是大于远程网络的带宽。当我们在本地做了缓存之后就不用远程的去向原始服务器请求数据,则避免了远距离传输数据时受到小带宽的限制,这样我们就利用局域网的较大带宽来传输文本。
-
避免瞬间拥塞:
瞬间拥塞问题其实很考验原始服务器的抗压能力,当在网络上有一个热点问题的时候,会在短时间内有巨大的点击量,这样服务器不得不在但时间内处理百万计的网络请求。如果我们不做缓存处理,那么这样的对原始服务器的考验是巨大的。如果我们做了缓存,用户没有必要向服务器请求一些非必要的数据或者文本,这样对于原始服务器来说是一个极大的帮助,减少了服务器去接收访问的数据的次数。
-
距离延迟:
数据传输的过程中,当发送者和接收者两者的距离很远,那么数据传输带来的延迟就越明显。即使是光速传输,也会存在延迟,而缓存能够让远距离数据传输变得很低。
二,命中和未命中:
可以用缓存服务器中已有的副本来为客户端的请求提供服务,这种行为称为缓存命中,其实缓存命中的简单理解就是客户端从缓存中拿到了它想要的数据。反之被称作缓存未命中。
2.1再验证:
当我们的缓存服务器缓存原始服务器发来的数据时,经过一段时间后,原始服务器的内容可能会因为某些需求而发生改变。缓存要不定时的对缓存的数据进行检测,来确定我缓存的数据是不是最新的数据。这些新鲜度检测被成为HTTP再验证。为了有效的进行在验证,HTTP
定义了一些特殊的请求,不用从服务器上获取整个对象就可以检测出是否是最新数据。
通常情况下,缓存服务器并不会去主动的去向原始服务器发送请求来验证数据是否是最新的,原因在于这样会消耗一定的带宽,假如一个缓存服务器中有百万量级的存储文本,那么去验证一次需要消耗大量的资源。那么什么时候采取验证呢,一般情况下是用户发起请求的时候缓存服务器去向原始服务器发送验证请求。其实这里注意一下,并不是只要用户发起请求缓存服务器就发送验证请求的,是有前提条件的。这种前提条件我们后面会详细的讲到。
缓存服务器在对缓存进行验证的时候会向原始服务器发送一个小小的请求,这个请求的数据量其实是很小的。原始服务器会根据现有的数据来对请求进行回应。
HTTP
为我们准备了几个用于再验证的工具,后面将会讲到,而最常用的是If-Modefied-Since
首部,该首部的值是一个日期,该日期是该文件最后更改的日期。原始服务器会对请求进行回应,通常有以下三种情况:
-
再验证命中:
如果服务器文件未被修改,服务器会以一个
304 Not Modified
进行响应。只要缓存知道文本有效,那么就暂时将原来存储的副本标记为有效,并将副本提供给客户端,这个