服务端

状态码

2xx(成功处理了请求)

200:服务器已成功处理请求,并提供了请求的网页
201:用户新建或修改数据成功
202:一个请求已经进入后台
204:用户删除成功

3xx(每次请求使用的重定向不要超过5次)

304:网页上次请求没有更新(与上次请求的内容一样),节省宽带和开销

4xx(标识请求可能出错,妨碍了服务器的处理)

400:服务器不理解请求的语法
401:用户没有权限(用户名或者密码输入错误)
403:用户得到权限(与401相反),但是访问被禁止
404:服务器找不到请求的网页

5xx(标识服务器在处理请求的时候发生内部错误)

500:服务器遇到错误,无法完成请求
503:服务器目前无法使用(超载或停机维护)

304缓存原理(添加Etag标签.last-modifined)

服务器首先产生Etag,用它来判断页面是否被修改。客户端通过该记号传回服务端要求服务器验证缓存
304是HTTP的状态码,不返回内容,浏览器接收到这个参数就会去浏览器找缓存文件
流程:客户端请求页面A,服务端返回页面A,并在A上加一个Tage,客户端渲染页面,并把tage也存在缓存中。客户端在次请求页面A并将上次请求的资源和tage一起传递给服务器,服务器检查得到tage,并且判断上次请求的页面是否被修改,如果违背修改,则直接返回304

last-modified:客户端请求资源,同事会有一个last-modified的属性标记此文件在服务器的最后修改时间,客户端第二次请求次url时,根据http协议。浏览器会向服务器发送一个if-modified-since抱头,询问该时间之后此文件是否被修改过,没修改返回304

有了last-modified,为什么还要用ETag
1、因为如果在易绵中之内对一个文件进行两次更改,last-modified就会不正确(因为他不能识别秒单位的修改)
2、某些服务器不能精确的得到文件的最后修改时间
3、 两者互补,ETag判断的缺陷,比如一些图片等静态文件的修改
4、如果每次扫描内容都声称ETag‘进行比较的话,下然要比直接比较修改时间慢得多

get、post的区别

1、get的参数是放在url后边,以?分割,参数之间以&符相连。post是吧提交的数据放在http包的Body中
2、get提交的数据大小有限制,严谨的说是浏览器对url的长度有限制,post没有限制
3、get需要request.queryString来获取变量的值,而post方式通过request.from来获取值
4、get的方法提交数据,会带来安全问题,比如账号和密码会暴露在url上

http协议的理解

1、超文本的传输协议,是用于从万维网服务器超文本传输到本地资源的传输协议
2、基于TCP/IP通信协议来传递数据(HTML,img)
3、基于运用层的面向对象的协议,由于其简洁、快速的方法、是用于分布式超媒体信息系统
4、http请求信息request:

请求行、请求头、空行、请求数据

请求行(request):用来说明请求类型,要访问的资源以及所使用的http版本
请求头部:用来说明服务器要使用的附加信息
空行:请求头部后面的空行是必须的
请求数据也叫主体,可以添加任意的其他数据,传递参数

5、http响应信息response

状态行、消息报头、空行、响应正文

状态行:有http协议版本号、状态码、状态消息三部分组成
消息报头:用来说明客户端要使用的一些附加信息
空行:消息报头后面的空行是必须的
响应正文:服务器返回给客户端的文本信息

http和https 的区别

http是明文传输,而HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
其实HTTPS就是在常规的TCP协议层之上加入了一层TLS或者SSL协议。所以其端口也不是常规的HTTP的80端口,变成了443端口
1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

http1.0和http1.1的区别:

1、长链接:http1.0需要使用keep-alive参数来告知服务器建立一个长连接,而1.1默认建立长连接
2、节约宽带:http1.1支持只发送一个header信息(不带任何body信息)
3、host域:设置虚拟站点,也就是说,webserver上的多个寻站点可以共享一个ip端口。而1.0没有host域

http1.1和2.0的区别

1、http2采用的二进制文本传输数据,而非http1文本格式,二进制在协议的解析和扩展更好
2、数据压缩:对信息头采用了HPACK进行压缩传输,节省了信息头带来的网络流量
3、多路复用:一个信息头可以并发处理多个请求
4、服务器推送:我们在使用http2.0的webserver请求数据的时候,服务器会顺便把一些客户端需要的东西一起推送到客户端,免得客户端再次发起请求,这种方式非常适合加载进静态资源

web缓存

web缓存就是出于客户端和服务端的一个副本,当你发出第一个请求之后,缓存就会根据请求的内容进行保存
缓存的好处:

减少不必要的请求。
降低服务器的压力,减少消耗。
降低网络延迟,加快页面打开速度

前端呈现流程

1、查询DNS(域名解析),获取域名相对应的IP地址,查询浏览器缓存
2、浏览器与服务器简历tcp链接(三次握手)
3、浏览器向服务器发送http请求(请求和传输数据)
4、服务器接收到这个请求后,根据路径参数经过后端处理生成html代码返回给浏览器
5、浏览器拿到html开始解析和渲染,把一个完整的页面呈现出来

TCP三次握手

第一次握手:客服端发送一个请求连接,服务器端只能确认自己可以接受客服端发送的报文段
第二次握手: 服务端向客服端发送一个链接,确认客服端收到自己发送的报文段
第三次握手: 服务器端确认客服端收到了自己发送的报文段

浏览器渲染原理及流程

解析html以及构建DOM树–侯建render树–布局render树–绘制render树
构建DOM树:渲染引擎解析html文件,首先将标签转换成DOM树中的DOM,生成内容树
构建渲染树:解析对应的css样式文件信息(包括js生成的样式和外部的css)
布局渲染树:从根节点递归调用,计算每一个元素的大小、位置等。给出每个节点所在的屏幕的精准位置
绘制渲染树:遍历渲染树,使用UI后端层来绘制每一个节点

重绘:重绘是指一个元素的改变引发的浏览器行为,当盒子的位置、大小以及其他属性,例如颜色、字体大小等确定之后,浏览器会把这些属性都绘制一遍,将内容呈现在页面上
触发重绘的条件:改变盒子的外观属性、color,font-size,background

重排(重构/回流/reflow):当渲染树中的一部分(或全部)因为元素的尺寸规模,布局,隐藏德国改变而需要重新构建新的渲染树,就是回流
每个页面都需要一次回流,就是页面刚渲染完成的时候。
重排一定影响重绘,但是重绘不一定影响重排

table及其内部元素需要多次计算才能确定好其在渲染树中节点的属性值,比同等元素要多花时间,应注意避免

前端储存方式与传输方式 程序的session不会因为浏览器的关闭而删除

indexBD:是h5的本地存储库,把一些数据存储到浏览器中,没网络的话浏览器可以从这读取数据,离线运用 5M
Cookie:通过浏览器记录信息确认用户身份,弊端是大小4KB
Session:服务器端使用的一种记录客户状态的机制(把session_id存在set_cookie发送到服务端,保存为cookie)
localstroage:h5本地存储,数据永久保存在客户端中

localstroage、sessionstorage、cookie是存放在客户端的,session对象数据是放在服务器上的,实际上浏览器和服务器之间仅需传递session_id即可,服务器根据session id找到对应的用户session对象。

session存放数据更安全一些,一般存放用户信息,浏览器只适合存放一般的数据
cookie数据始终在同源的的http请求中携带,在浏览器和服务器之间来回传递,里边存放着session_id。sessionstorage,localstorage只在本地存储

大小区别的限制,cookie不能超过4kB,localstroage一般为5MB

数据有效期:

cookie在设置的(服务器设置)的有效期内有效
sessionstorage仅在浏览器窗口关闭前有效
localstorage始终有效

sessionstorage和localstorage的区别

session用于本地储存一个会话(session)中的数据,这些数据只有在用一个会话的页面中才能被访问(也就是说在第一次通信过程中),并且在会话结束之后数据也随之销毁,不是一个持久的本地存储,会话级别的存储
local用于本地储存的持久化,除非手动删除

token、cookie、session三者的理解

token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件(最好的身份认证,安全性好,切是唯一的)用户身份验证方式

cookie是写在客户端的一个txt文件,里边包括登录信息之类的,这样你在下次登录某个网站,就会自动调用cookie自动登录,服务器生成用户名,发送给浏览器、浏览器保存,下次请求再次发送给服务器(存放着登录信息)

session是一类用来客户端和服务端之间保存状态的方法,会话完成之后被销毁(这就代表服务端和客户端的一次会话)cookie中存放着session_id请求会大宋总合格id,session因为request对象而产生

基于Token的身份验证:(最简单的token:uid用户唯一识别身份+time当前时间戳+sign签名)

1、用户通过用户名和密码发送请求
2、服务器端验证
3、服务器端返回一个代签名的token,给客户端
4、客户端储存token,并且勇于每次发送请求
5、服务器验证token饼返回数据(每次请求都需要抬token)

cookie与session的区别

1、cookie数据放在客户的浏览器上,session数据放在服务器上
2、cookie不是很安全,被人截取之后就能够得到你的session信息
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
4、单个cookie保存的数据不能超过4K,一般浏览器都限制一个站点最多保存20 个cookie

session与token的区别

1、session认证只是把简单的User信息存储在session里边,session_id不可预测,一种认证手段,只存在服务端,不能共享到其他的网站和第三方APP
2、token是oAuth Token,提供的是认证和授权,认证针对用户,授权是针对APP,目的久石让某APP有权访问某用户的信息,token是唯一的,token不能转移到其他APP,也不能转到其他用户上。(使用app)
session的状态是存在服务器短的,客户端只存在session id,Token状态也是存在客户端的

cookie的弊端:

1、数量和长度的限制。每个特定的域名下最多生成20个cookie(chorme和Safari没限制)
2、安全性问题

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值