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 标签必须放在底部