{
kMainResource,
kImage,
kCSSStyleSheet,
kScript,
kFont,
kRaw,//动态请求ajax
kSVGDocument,
kXSLStyleSheet,
kLinkPrefetch,
kTextTrack,//video的字幕
kImportResource,
kMedia, // Audio or video file requested by a HTML5 media element
kManifest,
kMock // Only for testing
}
(1) 请求方法是以下三种方法之一:
HEAD
GET
POST
(2)HTTP的头信息不超出以下几种字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
var url = 'http://api.alice.com/cors';
var xhr = new XMLHttpRequest();
xhr.open('PUT', url, true);
xhr.setRequestHeader('X-Custom-Header', 'value');
xhr.send();
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 1728000
技术分享
基础类型
基本类型
Undefined 值未定义
Boolean 布尔值
Null 空对象指针
String 字符串
Number 数值类型
引用类型
页面加载过程
DNS服务器通过域名查找对应的web 服务器ip地址
浏览器访问web服务器
服务器处理完成返回html
浏览器解析、加载页面
解析html -解析过程哪些会被阻塞?
构建dom树和css树
构建render树 ---( 删除不显示的节点)
reflow—哪些操作会触发reflow
repaint—哪些操作会触发repaint
浏览器访问web服务器--最后分析各种请求的加载顺序
资源分类
prepareRequest(预处理)
检查请求是否合法
CSP是减少XSS攻击一个策略,我们只允许加载自己域的图片的话,可以加上下面这个meta标签
upgrade-insecure-requests
Mixed Content混合内容block ,在https的网站请求http的内容就是Mixed Content(Audio,img,video)
Origin Block
把请求做些修改
资源优先级
高优先级的资源(>=Medium)、同步请求和非http(s)的请求能够立刻加载
只要有一个layout blocking的资源在加载,最多只能加载一个delayable的资源
只有当layout blocking和high priority的资源加载完了,才能开始加载delayable的资源
同时加载的delayable资源同一个域只能有6个,同一个client即同一个页面最多只能有10个,否则要进行排队。
network的状态
http---发展
http协议—不讲
强缓存和协商缓存
缓存
为什么做缓存
第一次请求
强缓存
Expires:是http1.0的规范,它的值是一个绝对时间的GMT格式的时间字符串
Cache-Control :Cache-Control是在http1.1中出现的
协商缓存
Etag
和If-None-Match
Last-Modified
和If-Modified-Since
区别
有缓存
什么是跨域
跨域
解决跨域
一级域名相同
不同源通信
跨域前后端通信
跨源资源分享
跨域资源共享 CORS
什么是简单请求
同时满足以下两请求
简单请求
发送
返回
非简单请求
websocket
websocket
ws
(如果加密,则为wss
),服务器网址就是 URL。线程
js运作在浏览器中,是单线程的,即js代码始终在一个线程上执行,这个线程称为js引擎线程。
消息队列
消息队列
所有同步任务都在主线程上执行,形成一个执行栈。
主线程之外,还存在一个”任务队列”。只要异步任务有了运行结果,就在”任务队列”之中放置一个事件。
一旦”执行栈”中的所有同步任务执行完毕,系统就会读取”任务队列”,看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
主线程不断重复上面的第三步。
分类
microtasks:
macrotasks:
webworker
ServiceWorker
例如使用Service Worker来进行缓存,是用javascript代码来拦截浏览器的http请求,并设置缓存的文件,直接返回,不经过web服务器,然后,我们就可以开发基于浏览器的离线应用。这使得我们的web应用减少对网络的依赖。 如果我们使用了Service Worker做缓存,浏览器http请求会先经过Service Worker,通过url mapping去匹配,如果匹配到了,则使用缓存数据,如果匹配失败,则继续执行你指定的动作。一般情况下,匹配失败则让页面显示“网页无法打开”。
前端存储
cookie(4k) and Session
localStorage
localStorage的优势
localStorage拓展了cookie的4K限制
localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
localStorage的局限
浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性
目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换
localStorage在浏览器的隐私模式下面是不可读取的
localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
localStorage不能被爬虫抓取到
localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空
indexedDB
Indexed
js 错误类型
SyntaxError:语法错误.
Uncaught ReferenceError:引用错误(引用一个不存在的变量时发生的错误)
RangeError:范围错误
TypeError类型错误(变量或参数不是预期类型时发生的错误)
URIError,URL错误
EvalError eval()函数执行错误