Skip to main content

5 posts tagged with "bilibili"

View All Tags

cookie、localstroage、sessionstroage 区别

cookie: 大小受限,只有 4kb 的大小,服务器端和浏览器;并且每次发送一个新的页面的时候 cookie 都会发送过去,这样无形浪费了带宽; cookie 还需要指定作用域,不可以跨域调用

localstorage: 是一个持久化的本地存储,除非强制删除,否则数据永远不会过期,支持 getpost 请求(存储在 2.5MB 到 10MB 之间);不提供搜索功能,不能建立自定义的索引

sessionStroage: 是本地的一个会话级别的存储,在页面打开的时候创建,页面关闭的时候销毁

HTTP 里面的缓存机制

两种缓存方式,根据响应的 header 内容来决定

  • 强缓存(状态码:200):浏览器不向服务器发送任何请求,直接从本地缓存中读取文件并返回(相关字段:Cache-ControlExpires

  • 协商缓存(状态码:304):浏览器发送请求到服务器,通过服务器来告知缓存是否可用(相关字段:Last-Modified/If-Modified-SinceEtag/If-None-Match

缓存相关 header

Cache-ControlExpiresLast-Modified/If-Modified-SinceEtag/If-None-Match

img

详情请见:彻底理解浏览器的缓存机制

手写冒泡排序

样例代码:

function mySort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i; j < arr.length; j++) {
if (arr[i] > arr[j]) {
let temp = arr[j]
arr[j] = arr[i]
arr[i] = temp
}
}
}
}

浏览器事件循环

浏览器事件循环#

浏览器事件循环是指 JS 引擎在解析 JS 脚本时,将同步方法压入到执行栈,而将异步方法放入事件队列中,当执行栈中的方法执行完后,浏览器前往事件队列查看是否有已完成的任务,如果有,则将其取出放入执行栈中。反复重复上述动作即叫做事件循环

答题需要跟浏览器的线程联系起来,即 JS 引擎线程、事件触发线程、定时触发器线程

更多详情请见 JavaScript 运行机制详解:再谈 Event Loop