浏览器渲染和网络请求

2022-03-23  本文已影响0人  scrollHeart

1、Ajax使用

全称 : Asynchronous Javascript And XML

异步,就是向服务器发送请求的时候,不必等待结果,而是可以同时做其他的事情,局部刷新

创建Ajax的过程:

  1. 创建XMLHttpRequest对象(异步调用对象)

var xhr = new XMLHttpRequest();

  1. 创建新的Http请求(方法、URL、是否异步)

xhr.open(‘get’,’example.php’,false);

  1. 设置响应HTTP请求状态变化的函数

onreadystatechange事件中readyState属性等于4。响应的HTTP状态为200(OK)或者304(Not Modified)

  1. 发送http请求

xhr.send(data);

  1. 获取异步调用返回的数据

2.HTTP、TCP、socket

三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包

第一次握手(SYN=1, seq=x):

客户端发送一个 TCP 的 SYN 标志位置1的包,指明客户端打算连接的服务器的端口,以及初始序号 X,保存在包头的序列号(Sequence Number)字段里。

发送完毕后,客户端进入 SYN_SEND 状态

3、Websocket:

WebSocket是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信

特点:

a、事件驱动

b、异步

c、使用 ws 或者 wss 协议的客户端 socket

d、能够实现真正意义上的推送功能

4、什么是跨域以及几种简单解决方案

同源策略:用来限制从一个源加载的文档或脚本与来自另一个源的资源进行交互

解决方法:

5.浏览器渲染流程

从耗时的角度,浏览器请求、加载、渲染一个页面,时间花在下面五件事情上:

  1. DNS 查询

  2. TCP 连接

  3. HTTP 请求即响应

  4. 服务器响应

  5. 客户端渲染

  1. 处理 HTML 标记并构建 DOM 树。

  2. 处理 CSS 标记并构建 CSSOM 树。

  3. 将 DOM 与 CSSOM 合并成一个渲染树。

  4. 根据渲染树来布局,以计算每个节点的几何信息。

  5. 将各个节点绘制到屏幕上

6.浏览器重排和重绘

重排,我们对DOM的修改引发了DOM几何元素的变化,渲染树需要重新计算

重绘只会改变vidibilityoutline、背景色等属性导致样式的变化,使浏览器需要根据新的属性进行绘制

重排会产生比重绘更大的开销

页面首次渲染的时候,所有组件都要进行首次布局,这是开销最大的一次重排

浏览器窗口尺寸改变 3.元素位置和尺寸发生改变的时候 4.新增和删除可见元素 5.内容发生改变(文字数量或图片大小等等) 6.元素字体大小变化。 7.激活CSS伪类(例如::hover)。 8.设置style属性 9.查询某些属性或调用某些方法

重绘的操作主要有vidibilityoutline、背景色等属性的改变

重绘不一定导致重排,但重排一定会导致重绘

减少重排和重绘开销

7、浏览器渲染原理, 什么情况会触发重排和重绘?

触发重排的情况:

触发重绘的情况:

页面样式改变

8、谈谈对前端安全的理解,有什么,怎么防范

XSS攻击,CSRF攻击

对用户输入的信息进行层层检测,

要注意对用户的输出内容进行过滤(进行转义等)重要的内容记得要加密传输,

get与post请求,要严格遵守规范,不要混用,不要将一些危险的提交使用jsonp完成,

对于URL上携带的信息,要谨慎使用

9、对JSON的了解?

JSON中对象通过“{}”来标识,对象的值是键值对的形式

JSON是JS的一个严格的子集,一种轻量级的数据交换格式

10、XML与JSON的区别?

  1. 数据体积方面。JSON相对于XML来讲,数据的体积小,传递的速度更快些。

  2. 数据交互方面。JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。

  3. 数据描述方面。JSON对数据的描述性比XML较差。

  4. 传输速度方面。JSON的速度要远远快于XML。

11、如何删除一个cookie?

1) 将cookie的失效时间设置为过去的时间

2)将系统时间设置为当前时间往前一点时间

12. 本地存储几种方式

Cookie:是服务器"种植"在客户端的key-value形式文本文件。但同时客户端也能操作cookie

跨域访问问题;

无法保存太大的数据(最大仅为4KB);每个域名下cookie的个数现在在20

cookie始终被携带在http请求中

客户端可以通过document.cookie操作cookie,并不安全

本地保存的数据会发送给服务器,浪费带宽

cookie可以设置过期时间、路径、域和httpOnly等字段。如果设置了过期时间,cookie会保存在硬盘里,知道到了设定的过期时间才会失效。若未设置过期时间,在浏览器窗口关闭时,cookie就失效了。路径和域两个字段限制了cookie的作用范围。httpOnly设置为true,则js不能通过document.cookie操作cookie

使用sessionStorage、localStorage

1 缓存数据 2 减少对内存的占用

storage只能存储字符串的数据,对于JS中常用的数组或对象却不能直接存储

localStorage是一种你不主动清除它,它会一直将存储数据存储在客户端的存储方式,即使你关闭了客户端(浏览器),属于本地持久层储存

sessionStorage用于本地存储一个会话(session)中的数据,一旦会话关闭,那么数据会消失,比如刷新

它能保存更大的数据(IE8上是10MB,Chrome是5MB),同时保存的数据不会再发送给服务器,避免带宽浪费

上一篇 下一篇

猜你喜欢

热点阅读