//IE浏览器最高,有chorme,整chrome
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> //双核浏览器,优先用webkit
<meta name="renderer" content="webkit">//dns预解析
<meta http-equiv="x-dns-prefetch-control" content="off">1、什么是http?特点
客户端跟服务器的数据传输格式规范。超文本传输协议。
简单快速 、无连接、无状态。
http是建立在传输层tcp上的一种应用,响应完毕后断开。无状态。
2、无状态协议?处理?
对事物处理没有记忆。无状态,不连接
处理:1cookie2session
3、http报文组成
请求报文
- 请求头
- 请求行
- 请求实体
响应报文
- 状态行
- 响应头
- 响应内容
4、http处理方式
get、put、delete、post、
5、http1.0跟1.1的区别
1.1默认是keep-Alive持久性链接 无状态,不连接
管线化:打包处理,不一波。
6、get和post区别
get数据量少,用?和&拼装,get浏览器回退有害,get浏览器自动缓存
post用对象Request body装请求参数,安全,暴露少
7、http和https
多了一层SSL安全通信路线,被窃取风险低
8、状态码
- 接受
- 成功
- 重定
- 请求资源错误
- 服务器崩
9、tcp三握手四挥手
三握手--连接进入establish状态
- 客户端先发sync,等待
- 服务端收sync,变sync+1,和确认ack。回复 sync+ack
- 客户端接受sync+ack,后发给服务端ack
四挥手--断开
- 客户端发,要关啦
- 服务端收到,先回复信息收到了,关闭完成了,再回复,关好了
- 客户端回复,知道你关了
10七层模型和四层模型
-----------------------------------------------------------------------------
同源策略和限制
限制从一个源加载的文档或者脚本,与另一个源的资源交互。
通信
- Ajax 同源
- WebSocket 不限制同源
- CORS 支持跨域和同源
Ajax
var xhr= XMLHttpRestuest ? new XMLHttpRequest()
:new window.ActiveXObject('Microsoft.XMLHTTP');
xhr.open('get',url,true);
xhr.onreadystatechange = function(){
//开始异步执行
if(xhr.readyState ===4){ //4响应内容解析完成,可以再服务端调用了
if(xhr.status ==200){ //执行成功
alert(xhr.responseText)//返回的内容
}
}
}xhr.send()
跨域通信
JSONP <script>标签,创建包含函数名的,返回
WebSocket
hash //url #后面的,改变不刷新页面
postMessage //h5新增 A发:window.postMessage()B收:addEventMessage('message')
CORS //可以说是支持跨域的ajax fetch实现了CORS调用安全
- CSRF 跨站请求伪造cookie。 措施:token验证
- XSS 跨域脚本攻击,页面注入脚本 措施:
渲染机制
<!DOCTYPE html> h5
(HTML --->HTML tree) + (CSS --->CSS tree)
--> (render )
重排 reflow 修改dom
重绘 repaint 颜色字体啥的
JS运行机制
js是单线程
页面性能
- 资源压缩和平,减少http请求
- 使用cdn
- 非核心代码的加载-->异步加载的方式--->1动态脚本加载2defer3async-->
- 利用浏览器缓存 -->缓存分类---->1expire 2last-modified
- 预解析dns
1缓存分类
强缓存
- Expires Expires:Thu, 21 Jan 2017 23:39:02 GMT
- Cache-Control:Cache-Control:max-age=3600 (优先级高)
协商缓存
Last-Modified
Etag服务器给你 If-None-Match
错误监控
即时运行捕获错误
- try.catch
- window.onerror()
资源加载错误
- object.onerror
- performance.getEntries()
- Error
用Ajax上报错误