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对于动态资源的加速效果。



  • 2017-04-15 23:54:49

    ViewPager+Fragment取消预加载以及禁止滑动

    取消预加载 网上了解了很多取消预加载的方法,里面提到了使用一个viewpager的public方法setOffscreenPageLimit 经过查看源码以及验证发现该方法是管理Viewpager预加载的页数,最低也是默认为一页(例如ViewPager一共有4页,当前手机屏幕显示第一页

  • 2017-04-15 23:56:30

    onInterceptTouchEvent和onTouchEvent调用关系详解

    如果没有onInterceptTouchEvent,只考虑onTouchEvent的话,比较容易分析和理解。假如有三层布局结构,linearLayout1,linearLayout2,textView,从前到后是包含的关系。那么下面分情况说明。

  • 2017-04-16 19:36:32

    ViewPager预加载问题和onCreateView多次调用问题的解决

    1,在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载(默认是左右各一个Frament)。通过设置setOffscreenPageLimit(int number) 来设置预加载的熟练,在V4包中,默认的预加载是1,即使你设置为0,也是不起作用的,设置的只能是大于1才会有效果的。我们需要通过更改V4包中的默认属性才可以

  • 2017-04-16 21:02:55

    ImageView的android:adjustViewBounds属性

    取值为true时: Adjust the ImageView's bounds to preserve the aspect ration of its drawable. 调整ImageView的界限来保持图像纵横比不变。 这并不意味着ImageView的纵横比就一定和图像的纵横比相同

  • 2017-04-18 17:12:50

    Laravel 读取 config 下的数据

    Laravel的config下一般存放配置信息,可以通过config('key')方法获取指定的数据。 设置值可通过「点」式语法读取,其中包含要访问的文件名以及选项名称。