3
头图

浏览器

浏览器缓存

MEMORY CACHE | DISK CACHE

memory cache 与 disk cache 的区别:

  • memory cache 更快
  • memory cache 会随着浏览器关闭而回收,disk cache 不会

两者什么时候使用?

200 -> response -> 关闭浏览器 -> 请求相同地址 -> disk cache -> 刷新 -> memory cache

浏览器帧率

从一个像素渲染到页面的全过程。

回流与重绘

css树和dom树,合并生成渲染树。
发生回流必发生重绘。

垃圾回收

算法有哪几种?分别原理是什么?

  • 引用计数:通过计算变量被引用的次数确实是否进行垃圾回收。缺点是当出现循环引用时,无法清除;另外就是有时间开销,要不停监控对象。优点是速度快,发现后立即回收。
  • 标记清除:执行过程分两次,第一次确定变量是否被引用并标记,第二次将未被引用的变量回收并清除标记。缺点是执行两次,回收过程程序终止执行;产生内存碎片;。优点是可以识别循环引用
  • 标记实现:标记清除的基础上增加了对碎片空间的整理,将碎片移动并合并成一个连续空间

V8中使用的是那种?

为了减少GC可以做那些优化?

如何通过 performance 监控浏览器?

如何通过 timeline 找到频繁垃圾回收,减少阻塞?

计算机

缓存

协商缓存与强缓存

强缓存是指,不直接从服务器中获取数据,直接从缓存中获取,通常是通过服务端设置 http 头实现。
协商缓存是指,服务器与客户端通过标识确定是否从缓存还是服务器中获取资源。

http

http1.1 比 http1 多了 E-Tag,用于协商缓存的字段
http2 多了二进制传输,流媒体之类

http 工作流程

ps. TCP 三次握手:C - 你在吗?-> S - 我在 -> C - 知道了-> S

非简单请求比简单请求多了“预检”OPTION,响应“预检请求”后才开始正式通信。

简单请求:POST, GET, HEAD
非简单其你去:

  • DELETE,PATH,PUT
  • 发送 json 数据。
  • 自定义头部字段

http1.0、 http1.1 、 http2.0、https

http 存在的性能障碍主要是两个点:带宽与延迟。带宽目前通过硬件提升,延迟又分为3种,浏览器阻塞、DNS 查询、建立连接。浏览器阻塞通常是因为浏览器会限制最大连接数,DNS 是查询过程消耗的时间,建立连接,通常是 http 协议在 TCP 中经过3次握手 4次挥手。

http1.0 时代,1996年,主要是处理简单的html页面
http1.1 时代,1999年,增加了 css 与 js 文件,为了加快网站的加载速度

  • 缓存策略,头增加了 Expire,If-Modified-sice
  • 扩充了错误状态码
  • 为了适配主机使用虚拟机时,会公用一个 IP,所以增加了 Host 字段。在 http1.1中,请求和响应都要增加该字段。
  • 增加了长连接,Connect: keep-alive,在一个长连接下,不用重复建立连接和关闭连接的消耗。

    • header 压缩

    https,参考,默认是443端口
    C -hash支持 ->S
    S -公钥加密的认证->C
    C 验证认证
    C -对称加密(RSA)加密文本和公钥 -> S

    http2.0 时代,基于谷歌剔除的SPDY方案做了升级

    • 传输用二进制,而不是 http1.* 时的文本
    • 支持服务端的 push
    • 多路复用:在一个连接中,即可实现并行,而不是原来有序阻塞。通过将对二进制数据帧进行顺序标识,客户端接收到的数据进行合并,而不会出现错位。因为一个连接即可完成,所以对服务器来说相当于增加了并发量(原来需要发4个连接,现在一个连接能达到4个连接的效果)。
    • 丰富缓存类型:协商缓存
    • header 压缩

websocket

原理:类似于http 需要握手,但是不同的是具有持久的链接
头有 upgrade 标识 websocket 通信

跨域

有哪些不用的考虑跨域?
script, link,img src 这种不需要考虑跨域

跨域的解决方案?

  • nginx
  • cors
  • jsonp 需要后端和前端协商回调函数名

安全

常见的攻击与阻止有哪些?

CSRF
待补充

XSS
待补充

source-map
源码解析

中间人攻击
待补充

从浏览器输入URL到返回页面的过程

参考


donggg
203 声望584 粉丝

> github