面试2-0309

123 阅读2分钟

http

1,http

  • content-type:ext/html : HTML格式 text/plain :纯文本格式 text/xml : XML格式 image/gif :gif图片格式 image/jpeg :jpg图片格式 image/png:png图片格式 以application开头的媒体格式类型:

application/xhtml+xml :XHTML格式 application/xml: XML数据格式 application/atom+xml :Atom XML聚合格式 application/json: JSON数据格式

  • 常见请求头
  • If-Modified-Since cookie accept user-agent
  • Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8

响应头

  • Allow: post get
  • Content-Type
  • Expires
  • Last-Modified
  • Set-Cookie

2,页面优化

  • 缓存 cookie,localstorage
  • 按需加载与缓存 (上拉加载)
  • expires Cache-Control来克服Expires头的限制,使用max-age指定组件被缓存多久。

Cache-Control: max-age=12345600

  • js的按需加载

请求过程

在浏览器地址栏输入url地址,按下回车键

  • 浏览器获取url进行域名解析,首先从本地DNS缓存查找,如果本地没有则去DNS服务器查找,如果都没有找到,则浏览器返回请求失败 DNS解析出请求地址,浏览器想这个地址发送请求 进行tcp三次握手建立连接 tcp/ip连接建立后,浏览器向服务器发送http请求,服务处理请求并返回相应的资源(如果有缓存就在缓存中去) 客户端下载资源,浏览器将内容展示到窗口
  • 3、渲染过程

渲染引擎解析html生成DOM Tree,此时display:none的元素也存在与DOM Tree 渲染引擎解析css生成CSS Rule Tree(css规则树) 通过js引擎来解析Javascript脚本,主要是通过DOM API和CSSOM API来操作DOM Tree和CSS Rule Tree. DOM Tree 与CSS Rule Tree结合生成Render Tree(渲染树),这时display:none的元素已不存在与render tree中 然后计算每个DOM节点的位置大小等,根据渲染树来布局,这一过程叫reflow(回流) 最后调用系统Native GUI API进行绘制(重绘)

  • 4、渲染过程遇到js文件怎么处理?

JavaScript的加载、解析与执行会阻塞DOM的构建,也就是说,在构建DOM时,HTML解析器若遇到了JavaScript,那么它会暂停构建DOM,将控制权移交给JavaScript引擎,等JavaScript引擎运行完毕,浏览器再从中断的地方恢复DOM构建。

也就是说,如果你想首屏渲染的越快,就越不应该在首屏就加载 JS 文件,这也是都建议将 script 标签放在 body 标签底部的原因。当然在当下,并不是说 script 标签必须放在底部