- 浏览器的存储方式
- get和post请求的区别
- 浏览器渲染的理解
- http状态码
- 跨域问题以及解决方案
- web的性能优化
浏览器的存储方式
cookie:一般是由服务器生成的,数据大小4k,在与服务器通信是每次都会携带在请求头中,影响请求速度,一般用于登陆验证,大多数浏览器都兼容,cookie保存在浏览器端,可以设置过期时间等(setMaxAge)没有封装好的api。
localstorage:h5新增加的特性,本地存储使用的,是为了解决cookie存储空间不足的问题,存储大小5m左右,没有过期时间,除非手动清除,不会参与与服务器之间的通信,保存值的类型限定为字符串,存取 JSON 数据需配合 JSON.stringify() 和 JSON.parse()。
sessionstorage:用于临时存储,过期时间为浏览器关闭,5m左右的存储空间,不参与服务器之间的通信。
userdate:无存储大小,无过期时间,不参与服务器通信。
cookie和session的区别和联系
session是基于cookie来实现的,cookie 保存在客户端浏览器中,而 session 保存在服务器上。cookie 机制是通过检查客户身上的“通行证”来确定客户身份的话,那么 session 机制就是通过检查服务器上的“客户明细表”来确认客户身份。session 相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了
get和post请求的区别
get参数是放在url上传递的,并且传递的参数有大小限制,而post在body中传递,没有大小限制
get请求会被浏览器主动缓存,而post不会
get请求只能对url进行(x-www-form-urlencoded)编码,而post支持多种编码
get请求浏览器后退没有任何影响,而post会重新请求数据
get相对于post更不安全,参数直接暴露在url中
浏览器渲染的理解
1 html解析DomTree
2 css解析StyleRules
3 两者关联,生成Render Tree
4 layout(布局),根据render tree计算每个节点的信息
5 渲染页面
注意点:解析过程中,遇见script脚本会立即停止对文档的解析,因为js脚本会影响css和dom,会造成浪费,外部脚本,会等待下载完之后再去解析。
现在 script 标签增加了 defer 和 async 属性,脚本解析会将脚本中改变 DOM 和 css 的地方 解析出来,追加到 DOM Tree 和 Style Rules 上
http状态码
常见状态吗:
200(“OK”)
一切正常。实体主体中的文档(若存在的话)是某资源的表示。
-201(“Created”)
当服务器依照客户端的请求创建了一个新资源时,发送此响应代码。
204(“No Content”)
若服务器拒绝对PUT、POST或者DELETE请求返回任何状态信息或表示,那么通常采用此响应代码。服务器也可以对GET请求返回此响应代码,这表明“客户端请求的资源存在,但其表示是空的”。注意与304(“Not Modified”)的区别。204常常用在Ajax应用里。服务器通过这个响应代码告诉客户端:客户端的输入已被接受,但客户端不应该改变任何UI元素。
400(“Bad Request”)
客户端方面的问题。实体主题中的文档(若存在的话)是一个错误消息。希望客户端能够理解此错误消息,并改正问题。
500(“Internal Server Error”)
服务期方面的问题。实体主体中的文档(如果存在的话)是一个错误消息。该错误消息通常无济于事,因为客户端无法修复服务器方面的问题。
301(“Moved Permanently”)
当客户端触发的动作引起了资源URI的变化时发送此响应代码。另外,当客户端向一个资源的旧URI发送请求时,也发送此响应代码。
404(“Not Found”) 和410(“Gone”)
当客户端所请求的URI不对应于任何资源时,发送此响应代码。404用于服务器端不知道客户端要请求哪个资源的情况;410用于服务器端知道客户端所请求的资源曾经存在,但现在已经不存在了的情况。
409(“Conflict”)
当客户端试图执行一个”会导致一个或多个资源处于不一致状态“的操作时,发送此响应代码。
303(“See Other”)
请求已经被处理,但服务器不是直接返回一个响应文档,而是返回一个响应文档的URI。该响应文档可能是一个静态的状态信息,也可能是一个更有趣的资源。对于后一种情况,303是一种令服务器可以“发送一个资源的表示,而不强迫客户端下载其所有数据”的方式。客户端可以向Location报头里的URI发送GET请求,但它不是必须这么做。
303响应代码是一种规范化资源URI的好办法。一个资源可以有多个URIs,但每个资源的规范URI只有一个,该资源的所有其他URIs都通过303指向该资源的规范URI,例如:303可以把一个对http://www.example.com/software/current.tar.gz的请求重定向到http://www.example.com/software/1.0.2.tar.gz。