HTTP
1. HTTP与HTTPS
a) 基本概念
i. http是一个客户端和服务端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的超文本传输协议。
ii. https是以安全为目标的HTTP通道,即HTTP下加入SSL层进行加密。其作用是:建立一个信息安全通道,来确保数据的传输,确保网站的真实性。
b) 区别及优缺点
i. http是超文本传输协议,信息是明文传输,HTTPS协议要比http协议安全,https是具有安全性的ssl加密传输协议,可防止数据在传输中被窃取、改变,确保数据的完整性
ii. HTTP协议的默认端口为80,https的默认端口是443
iii. http连接很简单,是无状态的。https握手阶段比较费时,会使页面加载时间延长50%,增加10%~20%的耗电
iv. https缓存不如http高效,会增加数据开销
v. https协议需要ca证书,费用较高,功能越强大的证书费用越高
vi. ssl证书需要绑定域名。
c) https协议的工作原理:客户端在使用HTTPS方式与Web服务器通信时有以下步骤:
i. 客户端使用https url访问服务器,则需要web服务器建立ssl链接
ii. Web服务器接收到客户端的请求之后,会将网站的证书(证书包含了公钥),传输给客户端
iii. 客户端与web服务器开始协商SSL链接的安全等级,也就是加密等级
iv. 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网址的公钥来加密会话密钥,并传送给网址。
v. Web服务器通过自己的私钥解密出会话密钥
vi. Web服务器通过会话密钥加密与客户端之间通信。
d) 请求跨域问题
i. 跨域原理
1. 跨域是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的。
2. 同源策略是浏览器对javaScript实施的安全限制,只要协议、域名、端口有任何一个不同,都被当作是不同的域。
3. 跨域的原理既是通过各种方式,避开浏览器的安全限制。
ii. 解决方案
1. JSONP:创建script标签发送
2. CORS:跨域资源共享服务器设置对CORS的支持原理:服务器设置Access-Control-Allow-Origin HTTP响应头之后,浏览器将会允许跨域请求
3. proxy代理:通过服务器设置代理
浏览器
1. url过程
a) 输入url
b) 查找缓存(浏览器缓存,系统缓存,路由缓存)
c) DNS域名解析:解析获取对应IP地址,DNS服务器是基于UDP的,因此会用到UDP协议。
d) 建立TCP连接:解析IP地址,根据IP地址和默认的80端口和服务器建立TCP连接。
e) 发送HTTP请求:浏览器发起读取文件的HTTP请求
f) 服务器响应请求返回数据
g) 关闭TCP连接
h) 浏览器渲染:
i. 构建DOM树
ii. 构建CSSOM树
iii. 根据DOM树与CSSOM树生成渲染树
iv. 计算布局
v. 遍历渲染树,绘制节点
i) JS引擎解析
2. 进程、线程、协程
a) 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体
b) 线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单位,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间。一个标准的线程有线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程有内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。
c) 协程是一种基于线程上,但又比线程更加轻量级的存在,这种由程序员自己写程序来管理的轻量级线程叫做【用户线程空间】,具有对内核不可见的特征。
HTML&&CSS
1. HTML5语义化:指合理正确的使用语义化的标签来创建页面结构。
2. BFC(块级格式上下文)是block formatting context缩写,即块级格式化上下文。BFC是CSS布局的一个概念,是一个独立的渲染区域,规定了内部box如何布局,并且这个区域的子元素不会影响到外面的元素,其中比较重要的布局规则由内部box垂直放置,计算BFC高度的时候,浮动元素也参与计算。
JS、TS、ES6
1. nextTick:在数据修改后,下一次DOM渲染时候执行回调;数据修改之后,立马执行,此时Dom还没有重新渲染。
2. updated:由于数据更改导致的虚拟DOM重新渲染,之后调用该钩子,当这个钩子被调用时,组件DOM已经更新,可以执行依赖Dom的操作