开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
一、HTTP2 / HTTP1 之间的区别是什么
1.http2 采用二进制格式而非文本格式,比起文本格式,二进制格式解析起来更加高效,并且错误少
2.http2 是完全的多路复用,非有序并阻塞的----只需要一个连接即可实现并行,多路复用的意思是它能同时处理多个消息的请求和响应,http1 是一个连接一次只能提交一个请求的效率比较高,多了就会变慢
3.使用报头压缩,http2 降低了开销,http1 的消息头很大冗余,http2 是将消息头中的不同的部分分别用不用的索引进行表示,且会用哈夫曼编码压缩字符串,最后封装成 frame
4.http2 让服务器可以将响应主动”推送”到客户端缓存中,HTTP2 中服务器会主动将资源推送给客户端,例如把 js 和 css 文件主动推送给客户端而不用客户端解析 HTML 后请求再响应
二、介绍一下 websocket
websocket 是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通信的协议,这个对比着 http 协议来说,http 协议是一种无状态的、无连接的、单向的应用层协议,通信请求只能由客户端发起,服务端对请求做出应答处理。http 协议无法实现服务器主动向客户端发起消息,Websocket 连接允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。WebSocket 只需要建立一次连接,就可以一直保持连接状态
三、webSocket 如何兼容低浏览器
Adobe Flash Socket 、ActiveX HTMLFile (IE) 、基于 multipart 编码发送 XHR 、基于长轮询的 XHR
四、Ajax 解决浏览器缓存问题
1.在 ajax 发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
2.在 ajax 发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")
3.在 URL 后面加上一个随机数:"fresh=" + Math.random();。
4.在 URL 后面加上时间戳:"nowtime=" + new Date().getTime();。
5.如果是使用 jQuery,直接这样就可以了 $.ajaxSetup({cache:false})。这样页面的所有 ajax 都会执行这条语句就是不需要保存缓存记录