Http基础

【http缓存机制】

客户端请求数据 先向浏览器缓存数据库请求是否可以用缓存
缓存机制未命中时 客户端向服务器请求数据返回后 需要将新的数据和缓存规则存入缓存系统中

强缓存
    浏览器缓存数据库通过 http头信息判断是否是强缓存
    1.Expires服务端返回的到期时间
    2.cache-control max-age缓存内容将多久后失效(http1.1后采用)

协商缓存
    未命中强缓存 则向服务器发送请求 服务器根据header参数中的If-None-Match中的Etag参数(资源的唯一标识)或Last-Modified(该资源文件最后一次更改时间)判断是否命中协商缓存,命中则返回304状态码 通知浏览器从缓存中获取资源

精确度上etag优于Last-Modified 但性能上时间比hash值更优先

【http请求和ajax axios请求区别】

ajax通过xmlHttpRequest向服务器发送请求
http通过httpRequest发送
通过使用 XMLHttpRequest 对象,web 开发者可以做到在页面已加载后从服务器更新页面!
相同点: axios 和 ajax 都是用于请求数据渲染页面
不同点: ajax 实现了网页的局部数据刷新;
axios实现了对ajax的封装,使用了promise模式,使用then链,来处理JS异步编程

【http和https区别】

一般正式环境用https 本地环境用http
https是http的安全版 加入了SSL加密
Https比较费时 加载时间长 因此本地测试还是用http

【从输入Url到页面渲染发生了什么?】

网络请求阶段:DNS域名解析 通过url找到对应的ip地址 三次握手进行TCP链接 然后浏览器给服务器发送http请求
数据解析阶段:浏览器收到http响应报文 解析html css js生成dom树
渲染阶段: 数据更新完成 渲染真实dom节点

【什么是跨域,怎么解决】

解决跨域问题常用的解决方案有两个:
* JSONP:利用script标签可跨域的特点,在跨域脚本中可以直接回调当前脚本的函数。
* CORS:服务器设置HTTP响应头中Access-Control-Allow-Origin值,解除跨域限制。
但是这两个跨域方案都存在一个致命的缺陷,严重依赖后端的协助。
开发中遇到的每一个接口都需要提前找后端进行特殊处理。而且即使后端愿意帮忙,某些接口也不是随便能开放的(譬如已经在线上正式环境的接口)。 所以依赖后端协助的跨域解决方式都会在一定程度上限制前端的开发进度。

前端自己利用【代理 Proxy】和【反向代理 Reverse Proxy】来解决跨域问题

- 正向代理
    由浏览器端进行配置 可以对服务端隐藏
    配置成获取去非接口数据时 让代理服务器指向本机资源;访问接口时,指向后端接口数据
    使用Charles工具 配置代理接口映射
    然后chrome系浏览器的请求是不经过charles代理的,这时需要设置电脑上的网络设置,设置代理地址为charles的服务地址。
    微信开发者工具-》设置-》代理-》指向代理服务器


- 反向代理
由服务端配置,访问者并不知道自己访问的是一个代理
用到ngnix,反向代理实在服务器端进行处理。
首先修改hosts文件,将域名指向开发者的电脑本身,把自己伪装成服务端,再通过nginx对不同的请求进行转发,把静态资源指向开发者本地电脑的资源,将接口指向实际的服务器。

【http请求的方式 head方式】

http1.0有三种http请求方式
Get  请求数据
Post  提交数据
Head 向服务器获取响应小消息头

Http1.1新增五种
Options 返回服务器支持的http请求方法
Put 上传数据
delete 删除数据
Trace 回显服务器收到的请求 主要用于测试和诊断
Connect     能够将连接改为代理服务器

【TCP UDP的区别】

都是传输层协议
Tcp是面向安全连接的 可靠的 基于字节流  三次握手 四次挥手机制 只能一对一 一般用于文件传输
UDP是无连接的 不可靠 直接发送报文 适用于实时应用 电话 直播等

【websocket的实现和应用】

http交互模型是请求/响应式的 交互一般是通过客户端向服务器发送一个请求,sever才能根据请求,返回一个响应,而有时候需要服务器主动向客户端发送信息的时候呢?

传统的解决方案是轮询 非常消耗资源
http长链接 客户端发送一个请求, 服务器收到后不会立马响应 而是会将请求挂起 当请求的数据有更新的时候 再去进行响应

使用websocket解决方案 就是建立起一个固定的不断开的连接
Websocket心跳机制,需要双端定时发一个心跳包,让对方知道自己还在线
Websocket适用于实时交互的场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值