CDN动态加速 静态加速区别

2020-04-28 10:28:21

看完这篇文章,在我看来动态cdn加速还是有点不靠谱的。

还得搭建多地方的服务器。

参考地址 关于CDN的动静态加速

CDN做为内容分发技术,其核心原理就是将内容缓存到离用户最近的节点上,实现内容分发加速,这里内容主要分为两种,一种是静态内容,一种是动态内容。

静态内容:主要是指那些普通的文本文件或html或像html的没有任何后台动作的jsp、asp、php、css、html、jpg、js页面文件。

静态内容一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来。
动态内容并不是指网页上简单的 GIF 动态图片或是 Flash 动画,动态网站的概念现在还没有统一标准,但都具备以下几个基本特征:
  1. 交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁。
  2. 自动更新:即无须手动更新 HTML 文档,便会自动生成新页面。
  3. 因时因人而变:即当不同时间、不同用户访问同一网址时会出现不同页面。

从技术角度上来讲:

静态资源就是当用户多次访问这个资源,资源的源代码永远不会改变的资源。

动态资源是当用户多次访问这个资源,资源的源代码可能会发送改变。

本篇主要要讲的是CDN对于动静态结合的网站是如何进行加速的。

首先,对于静态资源,CDN的加速效果是最好的,因为文件本身没有变化,CDN会将文件缓存至节点,供终端用户访问使用,如果源站有新的静态资源产生,CDN也会及时去缓存这些资源,让用户无论是首次访问,还是多次访问,都可以快速获得内容。

但现在的大部分网站都是既有静态,也有动态,所以,要想实现对该类网站的加速,必须能够在实现静态加速的同时,还可以做动态加速。

对于动态资源,就网站而言,在没有加CDN的情况下,用户请求动态资源时,是需要通过客户端去到源站抓取,如果源站距离很远,就会导致用户请求时间变长。

加了CDN后,就和静态资源类似,用户可以从更近的节点上去获取资源,这样就缩短了访问时间,专业点讲,就是链路优化。

实现动态加速还有另外一个点,就是在缓存上的设置,对于静态资源,CDN一般会设置一个时间,这个时间是要告诉节点,多长时间去源站抓取一次内容。

这种设置主要考虑源站静态资源发生变化后,如果节点没有及时缓存该内容,会造成用户访问不到新内容,使CDN的命中率下降。

这里还要解释一下,为什么要设置一定的时间。两个原因,一个是静态资源更新没有那么频繁,另一方面,不设置一定时间,会频繁的去源站缓存内容,给源站造成压力。

由于动态资源的特殊性(时时变化),要想通过CDN实现动态加速,那就需要不停的去缓存源站的内容,所以这里的时间会设置为0。有人会问,那源站压力会不会很大,在我看来,这个是很难以避免的问题。

目前来看,个大厂商提供的动态加速,即便将时间设置为0,也很难实现理想的动态加速,这也是市场对于动态加速诟病良多的主要原因。

从技术层面上来看,动态资源的产生很大程度上来源于业务逻辑本身。如果业务逻辑很复杂,那么动态资源产生的数量就会变多,这时候会造成动态资源大量产生而分发跟不上的情况。现象就是,我登陆一个网站,光登陆就要花掉好几分钟时间。

对于这样的问题,云计算领域就提出了边缘计算的概念.

边缘计算是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。

对于动态内容的加速,边缘计算最大特点是将业务逻辑下放到节点,把原来需要源站处理的动态工作让靠近用户的节点来做,这样用户既可以快速获取动态内容,同时还减轻了源站压力,这就能很好的解决0缓存带来的源站压力,同时还通过节点实现了链路优化。

边缘计算目前个大云厂商都有推出,首先从原理上是可以很好的解决动态资源加速的问题,但实践上目前还没有被广泛采用,主要原因可能是技术和成本上的问题。

总的来讲,CDN是可以实现网站的动静态加速,主要方法是链路优化和缓存策略。但目前来看,CDN在静态资源的表现要远优于对动态资源的加速,其主要原因还在于业务逻辑的源站化,如果边缘计算的技术得到普及,那应该可以大大改善CDN对于动态资源的加速效果。



  • 2019-09-24 22:03:13

    nginx支持socket

    安装nginx,stream模块默认不安装的,需要手动添加参数:–with-stream,根据自己系统版本选择nginx1.9或以上版本。

  • 2019-09-26 13:25:38

    git合并时冲突<<<<<<< HEAD

    head 到 =======里面的lalala是自己的commit的内容 =========到 >>>>>>里面的hehehe是下拉的内容

  • 2019-09-26 18:57:29

    Java中数组怎么深度复制

    有时候循环进行一些操作,放入list,发现,list中的数据都是一个数据,这就尴尬了,我们需要深度复制,才能解决这个问题。或者生成新的,也就是深度复制。

  • 2019-09-26 19:03:33

    spring post jackson的反序列化需要无参构造函数

    JSON parse error: Cannot construct instance of `com.**` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.**` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)  at [Source: (PushbackInputStream); line: 2, column: 2]] ———————————————— 版权声明:本文为CSDN博主「冰夏之夜影」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u011561335/article/details/91346777

  • 2019-09-26 21:46:36

    Shiro整合JWT+Token过期刷新,demo,详解

    最近使用SpringBoot集成Shiro,JWT快速搭建了一个后台系统,Shiro前面已经使用过,JWT(JSON Web Tokens)是一种用于安全的传递信息而采用的一种标准。Web系统中,我们使用加密的Json来生成Token在服务端与客户端无状态传输,代替了之前常用的Session。 系统采用Redis作为缓存,解决Token过期更新的问题,同时集成SSO登录,完整过程这里来总结一下。

  • 2019-09-26 21:48:15

    解决UEditor超出最大字数后只提示不限制的问题

    最近项目用到百度额UEditor文本编辑器,今天测试向我提出了一个问题。就是在输入的文字超过默认的最大字数限制之后,虽然提示“字数超过最大范围,服务器可能拒绝保存”,但是仍然可以点击保存按钮进行保存。