00:00
嗨,大家好,这节课呢,我们给大家来讲一下N的动静分离,呃N的动静分离呢,也是比较常用的呃一种这个呃功能,这个功能呢,一般比较适合中小型的网站,大型网站呢,一般来说就不这么干了。呃,他为什么只适合中中小型网站呢?这就是因为中小型网站的呃,并发量并不是特别高,而且需要分离出来的静态资源呢,不是特别多,那么需要把这些静态资源给它挪到前置的NG服务器里啊,如果大型系统的话,那文件就太多了,比如说呃,淘宝啊,你用户上传的文件就非常非常的多啊,比如买家秀卖家秀啊,还有这个呃,商户上传这些商品详情页里边的一些介绍,一些图片,这些都属于是静态资源,这就非常多,它就不适合动静分离这种简单的技术架构,这动静分离比较适合这种初创的这种企业,呃,网站的呃,这种H5的呃,内嵌到APP里这种展示,或者是一些网站的展示,这些都是没有问题的,包括这个ERP系统,传统的这种。
01:03
呃,项目也可以使用动静分离,动静分离能够给我们起到这个系统加速的作用,我们来给大家看一下这个架构图。在用户启动,呃,在用户访问我们的系统的时候呢,呃,当然也是先到我们的这个路由的网关里,在请求我们的系统的时候呢,大多数啊,其实他都是想要呃展示出来一些东西,对吧?啊,当然他得请求有一部分呢,就是静态的请求,只是显示了一些图片啊,一些这个呃静态的网页,或者一些CSSJS这些需要渲染的东,这些东西它会比较多,呃,那我们就在这N这个里呢,把这些静态资源呢,全部都放在这N这里,不让它往这个后端的服务器里边去请求,如果我们画一个简单的架构图的话,大概是这个样子的。呃,我们的用户呢。这样我们的用户呢,发起请求啊,先是向我们的NG,他要做反向代理嘛,对吧。
02:05
呃,请求到N之后,NG会把请求代理给后端这个呃,动态的服务器,比如tomcat吧。原本的我们的项目部署呢,全部在这个tomcat的某一个目录下,比如说这个web APP。这个目录下,这里边呢,包含了呃,我们所部署的那个一些呃炸包,也就是我们一些像spring boot的一些程序啊,这炸包里边呢,会包含一些这个静态的资源,That static。的那个目录下对吧,那在这个目录下呢,呃,它带来的问题呢,第一就是你在上传的时候可能传不上去,当然你可以通通过配置啊,给它配置到外部的目录里,第二个问题呢,就是tomcat会响应很多非动态的请求,第二用户的一个请求打到我们的这个呃,Tomcat上。呃,比如说是嗯,我们网站的首页吧,它会内嵌很多的图片啊,这SCSCS这些,那相对来说一次请求呢,他肯定是完不成用户的请求,通过这个打tomcat先get回来的这个系统的主页这一个index HTML。
03:16
把这个index这个索引,就这主页给他拉回来之后,这个页面里边呢,会镶嵌很多的图片,那第二次用户还会再去请求我们的NG,再去把这个请求呢,代理到我们这个Tom cat上,再去找那些静态的这些资源给大家看一下,嗯,一个例子吧,比如说京东,我们打开我们的控制台,大家看这个network啊,现在是一个请求都没有,我们打开京东的首页。我们可以看到有多少请求?诶,你可能想象的只有一个主页的一个请求,这是呃,默认的这个请求在302到了这个,呃,3W京东点com,在这里边就有response了,这是一个静态的页面,这个页面呢,一般来说是我们后端的动态的服务器给我们返回的静态页面,但是这个静态页面里边呢,它关联引用了N多的图片,CSSJS这一系列的资源,所以会发起N多个请求同时在线我们的服务器。
04:13
那如果我们的技术架构呢,比较简单的话,用户请求到NG,就像我们刚才说的流程,拿回一个首页之后呢,还会在这首页里边去访问,嗯,里边内嵌那些JSCSS,那并发请求非常多,打到我们这个mca上。大家看啊,这里边儿,呃,光打开一首页还没有动,你看你稍微一动,这就变成200多个请求了。就是打开一首页里边就有200多个请求,这些请求都是请求的啥啊,就是这些HTML里边内嵌的这些图片啊,啊一些JS啊,你往下越滚,它会显示出来越多,主要就是图片会越来越多了。那我们的Tom cat大家知道他主要应该负责的功能和任务是啥?就是应该去处理一些动态请求吗?那我们如果要是能够把。动态请求和静态请求给它给分离开,把这static目录一下这些JS。
05:03
这些资源你看啊,JS。呃,CSS和图片把它前置到我们的NG个字里就是,反正用户都得访问NG个啊,本来呢,呃,它从Tom k去取,需要N这个字去代理一下,那接下来你甭去代理了,直接把我把它放到NG个字里不就完了吗?哎,把这些静态资源给它挪到前置的N这个字里啊,这就叫动静分离了,然后把这些动态的请求呢,给它打到我们后端这个tomcat上啊,这就是。动静分离的基本的原理啊,还有这个使用的场景啊。
我来说两句