浏览器浏览器缓存MEMORYCACHE|DISKCACHE内存缓存和磁盘缓存的区别:内存缓存更快内存缓存会随着浏览器关闭而被回收,磁盘缓存不会两者兼而有之什么时候使用呢?200->响应->关闭浏览器->请求同一个地址->磁盘缓存->刷新->内存缓存浏览器帧率从一个像素到页面渲染的全过程。回流重绘css树和dom树,合并生成渲染树。发生回流时必须发生重绘。垃圾收集算法有哪些类型?分离原理是什么?引用计数:是否通过统计变量被引用的次数来进行垃圾回收。缺点是当发生循环引用时,无法清除;另外,还有一个时间开销,必须持续监控对象。优点是速度快,发现后可以立即恢复。清除标记:执行过程分为两步,第一次判断变量是否被引用并标记,第二次回收未被引用的变量并清除标记。缺点是执行了两次,在回收过程中程序终止;产生内存碎片;优点是可以识别循环引用标记实现:在标记清除的基础上,增加碎片整理空间,将碎片移动合并成一个连续的空间。V8用的是哪一个?可以做哪些优化来减少GC?如何通过性能监控浏览器?如何通过timeline发现频繁的垃圾回收,减少阻塞?计算机缓存协商缓存和强缓存强缓存是指数据不是直接从服务器获取,而是直接从缓存中获取,通常是在服务器端设置http头。协商缓存是指服务端和客户端通过标识来决定是从缓存中获取资源还是从服务端获取资源。httphttp1.1比http1多了E-Tags,http2多了二进制传输字段用于协商缓存,http工作流如流媒体ps。TCP三向握手:C-Areyouthere?->S-Iamin->C-Iknow->S非简单请求比简单请求有更多的“pre-flight”OPTION,响应“pre-flightrequest”后开始正式通信。简单的请求:POST、GET、HEAD并不像你走的那么简单:DELETE、PATH、PUT来发送json数据。自定义头字段http1.0、http1.1、http2.0、httpshttp的性能壁垒主要是两点:带宽和延迟。带宽目前通过硬件来提升,延迟分为三种,浏览器拦截、DNS查询、连接建立。浏览器阻塞通常是因为浏览器会限制最大连接数。DNS是查询过程消耗的时间。建立一个连接,通常HTTP协议要经过3次握手和TCP中的4次握手。http1.0时代,1996年,主要处理简单的html页面。http1.1时代,1999年,加入了css和js文件。为了加快网站的加载速度,缓存策略在header中加入了Expire和If-Modified-sice。增加错误状态码是为了适应使用虚拟机时的主机,会共享一个IP,所以增加了Host字段。在http1.1中,这个字段被添加到request和response中。添加了长连接,Connect:keep-alive,长连接下,不需要重复建立和关闭连接。header压缩的https,参考,默认是443端口C-hashsupport->SS-publickeyencryptionauthentication->CCverificationauthenticationC-symmetricencryption(RSA)密文和公钥->Shttp2.0时代,基于Google排除SPDY方案在http1.*支持服务器端推送多路复用时,使用二进制代替文本进行升级传输:在一个连接中,可以实现并行而不是有序阻塞。通过顺序识别二进制数据帧,将客户端接收到的数据进行无错位合并。因为1个连接就可以完成,相当于增加了服务器的并发量(以前需要4个连接,现在1个连接可以达到4个连接的效果)。丰富的缓存类型:协商缓存头压缩websocket原理:类似于http需要握手,不同的是它有一个持久化的链接头,带有升级标志。跨域websocket通信有哪些不必要的考虑?script、link、imgsrc,不需要考虑跨域和跨域的解决方案?nginxcorsjsonp需要前后端协商回调函数名常见的攻击和防范有哪些?CSRF待补XSS待补source-map源码解析中间人攻击待补浏览器输入URL到返回页面的流程参考
