首页 > 为什么不使用CDN挂载整个应用?

为什么不使用CDN挂载整个应用?

我们使用CDN来挂载一些文件图片……那么,为什么不使用CDN来挂载整个应用?
可能是我对CDN的理解不够……望解答……


我现在就把单页应用全部放在cdn上,然后通过REST APIAPI服务器通讯。速度很快啊,用起来也很好。虽然我是这么干的,但是不知道合不合适。。。


因为CDN只能放静态文件


CDN的作用是提高页面的访问速度,主要原理是使用缓存来提高速度,所以主要用来存放一些一般情况下不会改变的文件。把这些文件的请求从你的主服务器上分离出去,不需要你的主服务器来处理这些请求,减小服务器压力。

但是整个应用的页面是需要根据用户信息(即使相同的请求)返回不同的页面,比如你访问百度首页和我访问百度首页右上角的用户名就是不一样的。一般这样的页面是不能缓存的,而是需要服务器动态的生成。为了提高速度,对于不是动态的页面,比如一幅图片或是某些经常用的js库等这些简单的请求就我们就不想让他浪费我们的服务器资源,交给CDN处理了(CDN还有一个好处就是,有些js库用户在访问其他页面的时候就加载了这个CDN写的资源,当访问我们的页面的时候就不需要再加载一次了)。

可能你会说为什么不把某些动态的页面也放到CDN上进一步减轻服务器的压力,但那样做就叫负载均衡了。既然叫CDN的话就是保存一些静态的,可以缓存的页面,利用缓存提高加载速度。

这个只是名字的问题,做负载均衡,只负责分发静态内容的东西叫CDN,其他的就不叫CDN了吧。
个人认为,一个静态服务器需要的服务器资源毕竟比动态的服务器少,为了提高性能所以就动态和静态的分开,不在某些服务器上分发动态的内容,这个只分发静态资源的服务器比相同的配置要比动态服务器有更大的负载量。所以就不给这样的服务器分配动态页面的任务了。
另外,图片视频文件之类的东西本身就比较大而且可以算是静态的内容,所以从动态服务器上分离出去,这样可以极大的减小服务的负载。
负载均衡本身的目的是减轻每个服务器的压力,那条请求归那个服务器响应没有明确的规定。主要看你觉得怎么可以尽量使用所有服务器可用资源。把静态资源放到另外一个服务器上只是一种大家觉得更好的分配方式而已,而这个时候静态资源服务叫CDN.


CDN (Content Delivery Network) 挂应用的话就不是 CDN 了。
当然,你所想的其实也是去中心化的软件作者们所想,但 Web 应用通常要存取用户数据的,你难道要把数据存在散布在全国乃至世界各地的CDN上么?这样做安全性尚且不论,用户换个地点(换了CDN节点)是不是就“丢失”数据了?

另外,CDN也是要钱的,仅仅是内容分发的话只要带宽给力就行了。奢望去跑那些很吃硬件的应用的话,又得多花钱了。


主要是cdn的原理是,用户首先访问cdn服务器,如果cdn服务没有缓存那么cdn访问源服务器,所以只能图片这种每次访问都没有变化的内容才适合cdn,而比如用户数据api等,不同用户每次访问要得到的数据是不一样的,那么就需要每次cdn都不能缓存任何东西,相当于用户多绕了一层服务器,就没有太大意义了。

当然,因为网络存在路由的壁垒,如果经由cdn服务器转发一次请求加上用户到cdn所需的时间比原来直接访问还短,也是可以的。

【热门文章】
【热门文章】