摘要: 首先 JavaScript 是单线程的,所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个。不妨叫它主线程。 但是实际上还存在其他的线程。例如:处理AJAX请求的线程、处理DOM事件的线程、定时器线程、读写文件的线程(例如在Node.js中)等等。这些线程可能存在于JS 阅读全文
posted @ 2021-07-28 19:00 真的想不出来 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 节流: 让事件函数隔一段时间触发一次。(应用场景:比如onscroll等高频率触发的事件中) // 函数节流 var canRun = true; var timer = null; document.onscroll = function () { if (!canRun) return; // 阅读全文
posted @ 2021-07-28 15:59 真的想不出来 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 浏览器缓存 客户端第一次获取到资源后,根据响应的 header 内容来决定如何缓存资源,可能采用的是强缓存,也可能告诉客户端浏览器采用协商缓存。 下面用两幅图来描述浏览器的缓存是怎么玩的,让大家有个大概的认知。 浏览器第一次请求时: 浏览器后续在进行请求时: 从上图可以知道,浏览器缓存包含两种类型, 阅读全文
posted @ 2021-07-28 15:45 真的想不出来 阅读(334) 评论(0) 推荐(0) 编辑
摘要: HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议);当使用 Keep-Alive 模式(又称持久连接、连接重用)时,Keep-Alive 功能使客户端到服务器端的连接持续有效 阅读全文
posted @ 2021-07-28 10:28 真的想不出来 阅读(638) 评论(0) 推荐(0) 编辑
摘要: DNS 实现域名到 IP 的映射。通过域名访问站点,每次请求都要做 DNS 解析。每次 DNS 解析,通常在200ms以下。针对DNS解析耗时问题,一些浏览器通过 DNS Prefetch 来提高访问的流畅性。 DNS Prefetch 是一种 DNS 预解析技术,当浏览网页时,浏览器会在加载网页时 阅读全文
posted @ 2021-07-28 10:00 真的想不出来 阅读(151) 评论(0) 推荐(0) 编辑