00:00
呃,同学们好,那最后的时间呢,我们带大家来看一看,呃,这个SI的这个一些相关的一些命令的配置。呃,在这官方文档上呢,带着大家来看一下就好了,因为这个东西呢,等我们真正需要用到的时候,你自己在呃深入的去学习一下,在这儿呢,不作为重点去给大家讲解。啊,在这呢,有这么一些命令啊,除了这个之外,当然呢,这个include include是我们最常用的。嗯,这ssi呢,呃,它除了include之外呢,还有很多其他可以去配置的这些,呃,命令选项我们大家来来看一下啊,这个英文的官方文档呢,写的也是比较简洁,读起来呢,呃,问题也都不大,我带大家来看看,首先呢,它可以额外的再去配置这个block。这block相当于一个块儿啊,它可以把我们的这些代码,或者说我们写的这些命令呢,给它给包裹在呃一个块里边啊,作为一个命令的区域啊。嗯,这是block啊,然后后边呢,还有这个config。这个conig,嗯,它可以配置这个,呃,我们在这个ssi这个上边的那些配置也是在呃N配置文件里边那个配置,那主要呢,就有一个这个error message,它是不是要给他这个输出这个呃。
01:15
错误的信息啊,以及这个错误信息它的这个呃具体输出是啥?你比如说我们在上面配置了,就在NX文件里边配置的这个error message呢,我们把它给呃这个这个打开的话,让它具体去呃提示这个错误,那个具体错误呢,其实就在这儿,这就是它的默认的这个输出的,呃,这个错误的这个文本我们可以在这呢去改一下它啊,当然你也可以直接把上面那个error message给它给关了,就是在配置文件里的。如果那个配置那个配置文件里的error message关了呢,它就不显示这个报错信息了,相当于我们的命令啊,就是语法上如果有什么有什么这个错误的话,可以在这儿去配置这个具体这个错误的信息。还有这个餐。这就是呃,当我们使用一些这个呃,日期相关的一些函数,就是内部的一些函数的时候呢,它可以配置一下这个日期的显示的格式啊,就YYMMDD什么的这些啊这。
02:11
大家也都比较熟了,再有就是这个IO。可以在这模板里边呢,我们直接去输出一些这个变量出来,在输出变量的时候呢,它有这么三个参数可以去选择啊哇,就是变量名称啊,你用哪个变量,有很多内内置的N变量,比如request的请求里边这些呃这些这个这个请求的这些值啊,我们可以拿回来用,还有内部的N的一些系统的变量拿出来呢,把这个呃变量的名称呢,可以扔在上边,然后直接就给它输出出来了。然后还有这个coding,然后这个coding啊嗯。和我们想象那个音靠近可能不太一样啊,它可以帮我们去,除了去直接展示这个内容之外,你像就用这个NT,相当于它是直接去帮我们去把这个呃文本给它给输出出来,还可以去给他呃以URL的这种编码格式给它给输出出来,就是呃额外的再去呃再次的去给他做一次这个encoding的这种操作。
03:05
然后还有这个default啊,就是你用的这个变量,如果没有值,那举例子说你请求的这个,呃,参数里边它它没传进来这个值,比如我我访问呃当前的页面,然后后边呢,带了一个问号,里边有个变量name等于张三,那你如果这个word word里边的跟这个这个name呢,你填的是这个张三,就是这儿啊,Word里边你填的是张三,如果他没传,那这有一个default,你可以去写一个啊,也不至于他这个。啊,啥都不输出啊,默认情况下他就不输出啊。然后还有这个if啊,看到这儿呢,是不是有一点像咱们平常用的模板引擎了,对吧,但它嗯,远远没有那些正经的模板引擎功能强大啊,而且在这个if服里边呢,呃。能做的这个判断其实也还好,并没有那么特别的完整,比如说if n if else,这也还可以了,然后在这做这个逻辑判断呢,它肯定是这个,呃,做一些布尔值的判断对吧?然后这里边可写的是这个,呃,正则表达式大家能看看出来吧。
04:07
啊,之前在课里边就给大家讲了,尽可能的不要在咱们的这种高性能的服务器里边去写这种正则啊,当然你做这些判断呢,嗯。最好也少做啊,你看这里边就可以写很复杂的正则上面是比较简单的对吧。这个稍微带了一点这种计算,因为他每次请求都会再来一遍,所以他会额外的消耗性能啊,再有就是正则写不好会非常消耗,呃,咱们这个这个。这个这个服务器这个资源的这个衣服呢,有开关是吧,然后这个。呃,还可以配合其他的这个,呃,命令我们一起去用,前面有一个IO,这衣服里边呢,呃,可以配合IO还可以了,这个功能也算是凑合了。然后还有这个include include呢,嗯,咱们在上节课用了这个基本的include,就是include file是吧?这include file呢,是直接读取磁盘文件的,然后还有一个include virtual,它可以去加载这个虚拟的路径,比如说我们这个location。
05:07
我们就可以呃在这里面去配,但是如果你要是用file的话,呃,这是加载不进来的啊。啊,因为它不是一个真实的文件,这个file它就认为它你要去找的是真实的文件吧,啊,这个virtual呢,就可以去写一个这个,呃,我们返型代理服务器后后端或者上游服务器里边的一个具体的地址啊,然后这个remote呢,呃,你可以把它认为是一个location啊,然后这边process pass上游服务器了,然后去去请求这个动态的请求。然后在这个请求的过程当中,呃,因为模板引擎要渲染嘛,对吧,他这个请求是要呃发送过去的,一般来说这个NG所有的操作都是异步去告的。那如果这会儿要异步了,你的你的目标引擎已经渲染完了,然后这个结果已经输入出去了,但是这个请求还没返回来,这是极有可能的,因为他有网络的开销嘛,他得去网络上去抓这个数据。
06:02
那这会儿数据没回来,你就渲染完了,那这个。这这不就白搞了嘛,对吧,所以这容易出问题,所以在这儿可以配合这个,呃,另外一个命令叫wait啊,可以把这个我们异步这种操作给它变成同步操作,让它阻塞一下,你等他把这个数据拉回来,你再去继续渲染你不然的话,你你上来就渲染了数据没回来,这就白玩了是吧。然后这个还有一个这个啊。呃,这个stop呢,可以配合呃这个这个block一块用,呃大概意思就是如果要是呃输出的时候出现什么问题,它可以去调用这个block里边的这些内容,并且让他去执行啊这这上边呢,不是有一个block吗。在这儿在这儿你可以定义一个块,然后让他去执行嘛,对吧,这相当于有点像这个定义了一个方法是吧。呃,然后再往下边看。
07:00
嗯。衣服下头。然后这个weight呢,就是想就是可以把它变成这个请求,把它变成阻塞式的或者同步的啊,等它返回结果,然后再继续渲染,然后这个set呢,可以在我们用呃反应代理发一些动态请求的时候,然后在后边呢跟一些这个value。啊,在这个value里边呢,可以去set这个值,把这个呃变量啊,设置到我们的这个URL的这个参数里边啊,这都比较简单的设置。呃,基本上就这些,然后这里边它有一个需要注意的就是呃,你在发这种这种这个远程请求的时候,Include这种virtual的时候呢,有一层限制就是sub request output buffer size啊在这里边可需要可这个可以去配置一下,呃,可使用的这个,呃,内存缓冲区的大小啊,这个配置配置的这个选项在这儿,你可以点开看看,那这就是这个,呃。NG的ssi的所有的内容了啊嗯,如果真的要用的话呢,也真心不太建议大家把这个。
08:07
SI这个模板设计的过于复杂,那么它就变成如果要是过于复杂的话呢,那么它就变成了一个这个应用级别的服务器了啊,他去做这个模板的这种内容填充和渲染啊,它会消耗更多的我们服务器的内存和计算资源。啊,更多的时候我们的NG啊,在前在这个最前边去撑着,去扛住流量,然后具体计算的分发到这个上游服务器去做,当然也有一些情况啊,我们可以就真的去用这个NG格去做这个,呃。这个这个这个这个呃,应用服务器啊,做一些额外的开发,但是啊,这个ssi用的时候还是。嗯,比较比较单纯比较单一的啊,就基本就用一个引用也就差不多了,更复杂这种模板引擎呢,还有更多的解决方案,比如说呃,我们用的这个,呃,Java的这种应用服务器上啊,有很多目标引擎,你用PHP也有很多目引擎,那即使用NG的话,还有另外一个更高效更强大的目标引擎,就在这个。
09:09
呃,啊,那个呢,用的真正要用模板去动态渲染的话,用那个会更多一些。这就是N的ssi。
我来说两句