2021-01-04 14:18:22 阅读(221)
CDN是一种加快网站访问速度和用户下载资源速度的服务,那么CDN缓存是什么意思呢?优缺点是什么?对此,本文将告诉大家CDN加速的那些事情,有兴趣的伙伴们记得了解一下。什么是CDN?CDN是什么,之前已经给大家详细介绍过了,如果有不懂的伙伴可以重新了解一下。简而言之,CDN是ContentdeliveryNetwork的缩写,即“内容分发网络”。CDN加速一般是指网站加速或用户下载资源加速。也许这个专业说,很多朋友不容易理解,下面分享一个小记忆深刻的例子。举个流行的例子:说到CDN的作用,可以用8年买火车票的经验来形象比喻:8年前,没有火车票销售点,12306.cn更是无从谈起。当时,火车票只能在火车站的售票大厅买到,我住的小县没有火车,火车票必须去城市火车站买,从县到城市,来回是4个小时的车程,只是浪费生命。后来就好了。小县城有火车票售票点,可以直接在售票点买火车,方便多了。全市人民不再需要排队买票了。CDN可以理解为每个县的火车票销售点。用户浏览网站时,CDN会选择最接近用户的CDN边缘节点来响应用户的要求,这样海南移动用户的要求就不会一路跑到北京电信机房的服务器上(假设源站部署在北京电信机房)。CDN具有明显的优势:(1)CDN节点解决了跨运营商和跨区域访问问题,大大降低了访问延迟;(2)CDN边缘节点的大部分要求,CDN发挥了分流作用,减轻了源站的负荷。什么是CDN缓存? 这里不深入研究CDN背后的高架构,也不讨论CDN如何实现全球流量调度策略。本文重点讨论了CDN后数据是如何缓存的。缓存是用空间换时间到处存在的例子。我们可以通过使用多余的空间获得更快的速度。首先,看看用户浏览器和服务器是如何在没有网站访问CDN的情况下互动的:用户浏览网站时,浏览器可以将网站中的图片或其他文件的副本保存在本地,这样当用户再次访问网站时,浏览器就不需要下载所有文件,减少下载量意味着提高页面加载速度。如果在中间添加一层CDN,用户浏览器和服务器之间的交互如下:客户浏览器首先检查当地缓存是否过期,如果过期,请求CDN边缘节点,CDN边缘节点将检测用户请求数据缓存是否过期,如果没有过期,则直接响应用户请求,完成http请求;如果数据过期,然后CDN还需要向源站发出回源请求(backtothesourcerequest),提取最新数据。CDN的典型拓扑图如下:可以看出,在CDN存在的场景中,数据经历了两个阶段:客户端(浏览器)缓存和CDN边缘节点缓存。下面详细分析了客户端(浏览器)缓存1)客户端缓存在这两个阶段的缺点 服务器请求减少了客户端缓存,避免了文件的重复加载,显著改善了用户的位置。但是当网站更新时(比如css被替换)、js和图片文件),旧版本的文件仍然保存在浏览器本地,导致不可预测的后果。但是当网站更新时(比如css被替换)、js和图片文件),旧版本的文件仍然保存在浏览器本地,导致不可预测的后果。从前,一个页面被加载,页面元素的位置漂浮,按钮点击失败,前端GG习惯性地问:“缓存清楚吗?”然后Ctrl F5 ,EverythingisOK。但有时,如果我们只是在浏览器地址栏中敲回车,或者只是按F5刷新,问题仍然没有解决。你知道这三种不同的操作方法决定了浏览器不同的刷新缓存策略吗?如何确定浏览器是否使用本地文件或服务器上的新文件?下面介绍几种判断方法。Expiress浏览器缓存策略 Expires:Sat,24Jan201520:30:如果Expires设置在54GMThttp响应报文中,我们将避免在Expires过期前与服务器连接。此时,浏览器不需要要求浏览器,只需要判断手中的材料是否过期,完全不需要增加服务器的负担。Cache-control:max-ageexpires的方法很好,但我们每次都要计算一个准确的时间。max-标签可以让我们更容易处理过期时间。我们只需要说,你只能使用这个数据一周。Max-用秒来测量age,例如:Cache-Control:max-age=645672指定页面645672秒(7.47天)后过期。Last-为了通知浏览器当前文件的版本,Modified服务器将发送最后一个修改时间的标签,例如:Last-Modified:Tue,06Jan201508:26:32GMT使浏览器知道他收到的文件的创建时间。在后续请求中,浏览器将根据以下规则进行验证:1. 浏览器:Hey,我需要jquery.min.如果js是在Tue,06Jan201508:26:32GMT修改后,请发给我。2. 服务器:(检查文件的修改时间)3. 服务器:Hey,这份文件之后就没有修改过,你已经有了最新的版本。2. 服务器:(检查文件的修改时间)3. 服务器:Hey,这份文件之后就没有修改过,你已经有了最新的版本。4. 浏览器:太好了,那我就给用户看。在这种情况下,服务器只返回304响应头,减少响应数据量,提高响应速度。下图是按F5刷新页面后,页面返回304响应头。ETag 通常,通过修改时间来比较文件是可行的。但在一些特殊情况下,如服务器时钟错误、服务器时钟修改、夏季DST到来后服务器时间未及时更新等,会导致修改时间比较文件版本的问题。ETag可以用来解决这个问题。ETag是文件中唯一的标志符。每个文件都有一个单独的标志,就像哈希或指纹一样,只要文件发生变化,这个标志就会发生变化。服务器返回etag标签:ETag:"39001d-1762a-50bf790757e00"下一个访问顺序如下:1.浏览器:Hey,我需要jquery.min.js这个文件,没有不匹配"39001d-1762a-50bf790757e00"2.服务器:(检查etag..)3.服务器:Hey,这里的版本也是如此"39001d-1762a-50bf790757e00",4.浏览器:好的,你已经是最新版本了就像Last-modified一样,ETag可以用本地缓存来解决文件版本比较的问题。只是ETag的级别比Last-Modified高。但是ETag的级别比Last-Modified高。额外的标签缓存标签永远不会停止工作,但有时我们需要控制缓存的内容。Cache-control:代理服务器或其他中间服务器可以识别public表示缓存版本。Cache-control:private意味着该文件对不同的用户有所不同。只有用户自己的浏览器才能缓存,公共代理服务器不允许缓存。Cache-control:no-cache意味着文件的内容不应该缓存。由于相同的URL,相应的内容会发生变化,因此在搜索或翻页结果中非常有用。刷新浏览器缓存 1. 在地址栏中输入网站后,按下返回车辆或点击转移到按钮浏览器以获取最少的要求。浏览器将直接使用本地缓存所有未过期的内容,以减少对浏览器的要求。所以,Expires,max-age标记只对这种方法有效。2. 按F5或浏览器刷新按钮浏览器将在请求中添加必要的缓存协商,但浏览器不允许直接使用本地缓存,这可以使Last-Modified、ETag发挥作用,但对Expires无效。3. 按Ctrl F5或者按Ctrl,点击刷新按钮,就是强制刷新,总会在不使用任何缓存的情况下发出新的请求。CDN缓存 浏览器本地缓存失效后,浏览器将要求CDN边缘节点。CDN边缘节点也有一套类似浏览器缓存的缓存机制。CDN缓存的缺点 CDN的分流作用不仅减少了用户的访问延迟,而且减少了源站的负荷。但它的缺点也很明显:当网站更新时,即使用户使用Ctrll,如果CDN节点上的数据没有及时更新 由于CDN边缘节点没有同步最新数据,F5的方式使浏览器端的缓存失效,导致用户访问异常。CDN缓存策略 CDN边缘节点缓存策略因服务提供商而异,但通常遵循http标准协议,通过http响应头中的cache-control:max-CDN边缘节点数据缓存时间设置age字段。当客户端向CDN节点请求数据时,CDN节点将判断缓存数据是否过期。如果缓存数据未过期,缓存数据将直接返回客户端;否则,CDN节点将向源站发送源请求,从源站提取最新数据,更新本地缓存,并将最新数据返回客户端。CDN服务提供商通常会根据文件后缀和目录的多个维度来指定CDN缓存时间,为用户提供更精细的缓存管理。CDN缓存时间会直接影响“回源率”。如果CDN缓存时间较短,CDN边缘节点上的数据往往会失效,导致频繁回源,增加源站负载,增加访问延迟;如果CDN缓存时间过长,数据更新时间较慢。开发人员需要增加特定的业务来管理特定的数据缓存时间。与浏览器Ctrll相比,CDN缓存刷新CDN边缘节点对开发者是透明的 F5的强制刷新使浏览器本地缓存失效,开发者可以通过CDN服务提供商提供的“刷新缓存”接口清理CDN边缘节点缓存。这样,在更新数据后,开发者可以使用“刷新缓存”功能来强制CDN节点上的数据缓存过期,以确保客户在访问时获取最新数据。
以上就是关于CDN缓存是什么意思?有什么优点和缺点?的相关介绍,更多CDN缓存是什么意思?有什么优点和缺点?相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对CDN缓存是什么意思?有什么优点和缺点?有更深的了解和认识。
推荐阅读
最新文章
猜你喜欢以下内容:
一 客户顾问-张三 一