chenjf5 / note

1 stars 0 forks source link

技术分享 #13

Open chenjf5 opened 6 years ago

chenjf5 commented 6 years ago

技术分享

基础类型

基本类型

引用类型

Objec、Null、Array、RegExp、Date、Function、(String、Number、Boolean)


页面加载过程

DNS服务器通过域名查找对应的web 服务器ip地址

浏览器访问web服务器

服务器处理完成返回html

浏览器解析、加载页面

DOM解析和资源加载

回流重绘

浏览器访问web服务器--最后分析各种请求的加载顺序

资源分类

{
    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
  }

prepareRequest(预处理)


http---发展

http协议—不讲

强缓存和协商缓存

缓存

为什么做缓存
第一次请求

d

强缓存
协商缓存
区别
  • 一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改了,而重新GET;
  • 某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If-Modified-Since能检查到的粒度是s级的,这种修改无法判断(或者说UNIX记录MTIME只能精确到秒);
  • 某些服务器不能精确的得到文件的最后修改时间。
有缓存

d

什么是跨域

CSRF(Cross-site request forgery),中文名称:跨站请求伪造

跨域

http://www.example.com/dir/page.html

http://www.example.com/dir2/other.html:同源
http://example.com/dir/other.html:不同源(域名不同)
http://v2.www.example.com/dir/other.html:不同源(域名不同)
http://www.example.com:81/dir/other.html:不同源(端口不同)
解决跨域
跨源资源分享

跨域资源共享 CORS

整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

什么是简单请求

同时满足以下两请求

(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
简单请求

自动在头信息之中,添加一个Origin字段

如果需要发送cookie,需要客户端显示添加withCredentials=true

非简单请求

浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。

var url = 'http://api.alice.com/cors';
var xhr = new XMLHttpRequest();
xhr.open('PUT', url, true);
xhr.setRequestHeader('X-Custom-Header', 'value');
xhr.send();
`OPTIONS /cors HTTP/1.1`---
Origin: http://api.bob.com---
Access-Control-Request-Method: PUT---
Access-Control-Request-Headers: X-Custom-Header---
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0...
HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 01:15:39 GMT
Server: Apache/2.0.61 (Unix)
Access-Control-Allow-Origin: http://api.bob.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Content-Length: 0
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/plain

如果浏览器否定了"预检"请求,会返回一个正常的HTTP回应,但是没有任何CORS相关的头信息字段。这时,浏览器就会认定,服务器不同意预检请求,因此触发一个错误,被XMLHttpRequest对象的onerror回调函数捕获。控制台会打印出如下的报错信息。

Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 1728000

Access-Control-Allow-Origin字段是每次回应都必定包含的

websocket

websocket


线程


前端存储

cookie(4k) and Session

localStorage

localStorage的优势

localStorage的局限

indexedDB

Indexed

使用IndexedDB,你可以存储或者获取数据,使用一个key索引的。 你可以在事务(transaction)中完成对数据的修改。和大多数web存储解决方案相同,indexedDB也遵从同源协议(same-origin policy). 所以你只能访问同域中存储的数据,而不能访问其他域的。   API包含异步(asynchronous) API 和同步(synchronous)API两种。 异步API适合大多数情况, 同步API必须同 WebWorkers一同使用. 目前,没有主流浏览器支持同步API


js 错误类型