什么是cdn服务器配置(cdn服务器是什么)

作者|曾健编辑|刘晶csdn (ID: csdnnews)网上有一个“8秒原则”,即如果一个页面的响应时间超过8秒,大部分用户就会放弃加载,从而放弃使用该页面或网站。淘宝、JD.COM、苏宁等电

本文最后更新时间:  2023-04-09 23:03:24

作者|曾健

编辑|刘晶

csdn (ID: csdnnews)

网上有一个“8秒原则”,即如果一个页面的响应时间超过8秒,大部分用户就会放弃加载,从而放弃使用该页面或网站。淘宝、JD.COM、苏宁等电子商务公司每天都有数万次访问量。在618电商节和双十一购物节,更是有上万的秒杀活动。在如此高的并发下,什么能支撑系统的正常运行?这就不得不提CDN了。什么是CDN?让我们找出答案。

什么是CDN?

CDN的全称是Content Delivery Network,即内容分发网络。

CDN是建立在网络上的内容分发网络,它有两个关键要素:内容存储和分发。其基本原理是广泛使用各种缓存服务器,这些缓存服务器分布在用户访问相对集中的区域或网络中。当用户访问网站时,使用全局负载技术将用户的访问定向到最近的正常工作的缓存服务器,缓存服务器直接响应用户的请求。

比如北京的用户让他访问北京的一个节点,上海的用户让他访问上海的一个节点,而不是上海的一个节点。一个上海的用户访问北京的一个节点,会大大增加用户的访问时间和成本。通过就近访问,可以加快用户访问网站的速度,解决互联网网络拥塞,提高用户访问网络的响应速度。

就像CDN网络里的快递小哥一样,把你网购的商品从最近的仓库拿出来选择最佳路线,及时把包裹送到指定的收货地点。

CDN起到保驾护航和加速的作用,让每一个网络请求都能被请求的更快,延迟更小,响应更快,带来极致的用户体验。当我们在浏览器中访问一个页面时,

CDN是如何发挥作用的?

主要步骤如下,如图所示:

1.当用户点击网站页面上的内容URL时,会被本地DNS系统解析,DNS系统最终将域名解析权交给CNAME指向的CDN专用DNS服务器;

2.CDN的DNS服务器将CDN的全局负载均衡设备的IP地址返回给用户;

3.用户向CDN的全局负载均衡设备发起内容URL访问请求;

4.CDN全局负载均衡设备根据用户的IP地址和用户请求的内容URL,在用户所在区域选择一个区域负载均衡设备,并告知用户向该设备发起请求;

5.区域负载均衡设备将根据用户的IP、接入资源和服务能力选择合适的缓存服务器为用户提供服务;

6.全局负载均衡设备将服务器的IP地址返回给用户;

7.用户向缓存服务器发起请求,缓存服务器响应用户的请求,将用户需要的内容发送给用户终端。如果这个缓存服务器上没有用户想要的内容,那么这个服务器向网站的源服务器请求内容,源服务器将内容返回给缓存服务器,并根据用户自定义的缓存策略判断是否缓存,返回给用户。

对于程序员来说,需要哪些资源才能知道CDN适合加速?

众所周知,一个完整的web资源包括CSS、JS、图片、音频、视频、页面。JS,CSS,图片,音频,视频都是静态文件。一个成熟的网站在上线过程中很少或者不会改变静态文件。这些类型的文件是最适合CDN加速的。CDN通过将这些静态资源分发到全国各地的服务器节点,可以实现从任何地方访问网页时,都可以选择最近的节点服务器下载资源。

页面主要分为静态页面和动态页面。比如各大公司的官网首页和退出页面一般都是静态文件,静态页面文件的结构一般都是不变的,主要是为了展示,这样的静态页面文件也非常适合CDN加速。动态页面文件是指页面会根据服务器返回的响应内容进行动态渲染,比如JSP和PHP文件。这些页面文件的内容是动态获取的,所以不适合CDN加速。由于网页的内容是动态变化的,存储在服务器端的内容有效期比较短,以至于浏览器在CDN服务器上请求内容后,总是会被处理为过期,最后请求会被发送到源服务器。在这种情况下,CDN的存在是没有意义的。

在访问浏览器页面时,我们也可以按F12键通过浏览器控制台查看页面资源的一些缓存配置。例如,如果您通过Google Chrome访问百度网站(www.baidu.com),您可以通过打开控制台查看页面加载过程中请求的资源。选择一个图像资源,查看对应的头信息,如下图所示:

返回消息中与缓存相关的字段有:Cache-Control、Etag、Expires、Last-modify、Pragma等。,在此进行解释。

到期时间:2019年11月3日星期日09:04:35 GMT;Expires是为缓存过期时间配置的。如果在http响应消息中设置了Expires,则可以在Expires之前避免与服务器的连接。此时,浏览器不需要向浏览器发送请求,只需要判断手中的资料是否过期,完全不增加服务器的负担。

缓存控制:最大年龄= 0;Cache-Control是缓存控制,不仅可以用于响应,也可以用于请求。用于控制缓存的开关,用于标识在请求或访问中是否打开缓存,以及使用哪种缓存方法。Cache-Control经常使用无缓存、无存储、max-age = delta-seconds等配置类型;No-cache请求源服务器通知(代理)服务器不要直接使用缓存。No-store表示不会缓存所有内容,max-age表示服务器客户端希望接收现有时间不超过delta-seconds的配置资源。

最后修改时间:2019年6月10日星期一09:12:15 GMT;Last-Modified是当前文件版本的上次修改时间。为了通知浏览器当前的文件版本,服务器将发送一个最后修改时间的标记,这样浏览器将知道它接收的这个文件的创建时间。

etag:\ ”2046392041\”;对应于实体内容的实体标签与实体内容密切相关。实体内容的任何变化都会改变该值。ETag是文件的唯一标识符,就像散列或指纹一样。每个文件都有一个单独的徽标,该徽标会随着文件的变化而变化。主要是解决一些Last-Modified解决不了的问题。例如,某些文件可能会定期更改,但其内容不会更改(仅更改时间)。此时,我们不希望客户端认为这个文件已经被修改并再次请求;或者有些文件修改非常频繁,比如在秒以内修改(比如1s内修改n次),If-Modified-Since可以检查到的粒度是S级,修改无法判断(或者UNIX记录MTIME只精确到秒),有些服务器无法精确到文件的最后修改时间等等。

Pragma:无缓存;当Pragma的值为no-cache时,表示禁用缓存;Pragma是老产品了,已经逐渐被抛弃,有些网站为了向后兼容还保留了这两个字段。如果Pragma和Cache-Control都出现在消息中,则以Pragma为准。当缓存控制和过期都出现时,以缓存控制为准。也就是优先级从高到低是pragma->:Cache-Control->过期.

不使用CDN时,用户访问网站时,浏览器将网站中的图片和静态资源文件保存在本地,这样用户再次访问网站时,浏览器就不需要下载所有文件,减少了下载量,提高了页面加载速度。使用CDN后,在浏览器访问服务器中间增加一层CDN。浏览器访问服务器时,首先检查本地缓存是否过期,如果是,则向CDN边缘节点发送请求,CDN边缘节点会检测用户请求数据的缓存是否过期,如果不是,则直接响应用户的请求。如果数据已经过期,CDN还需要向源站发回请求以获取最新数据。

当浏览器的缓存内容过期或者在Cache-Control中设置了max-age response头时,浏览器不会向服务器发送验证请求,而是直接重用本地缓存。此时,如果服务器更新资源,用户无法获得最新的资源,只能通过强行刷新浏览器缓存的方式向服务器请求最新的资源。使用CDN缓存可以避免更新浏览器缓存资源的延迟。CDN缓存不仅可以降低用户的访问延迟,还可以降低源服务器的负载。但需要注意的是,在更新源服务器资源时,如果CDN节点上的缓存数据不同步,用户仍然会访问过期的缓存资源,这将导致用户最终访问的偏差。此时需要手动刷新相关资源,使CDN缓存保持最新状态。

浏览器以最少的请求数获取网页的数据,对所有未过期的内容直接使用本地缓存,减少了对服务器的请求。使用CDN技术最大的好处就是加快了网站访问速度,缩短了用户与内容的物理距离,缩短了用户的等待时间,从而提升了用户体验。

作者:曾剑,目前在苏宁易购工作,专注于CDN相关系统开发。

声明:本文为作者的独立观点,不代表CSDN的立场。

【End】

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。