这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
一、场景分析-静态资源
静态资源方案:缓存 + CDN + 文件名hash(打包时对文件名根据版本号或一些内容hash) (1)CDN内容分发网络
(2)通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务
二、场景分析-登录
1、表单登录 跨域,
复杂请求有options预请求
相关协议头
Accees-Control-Allow-Origin
Accees-Control-Allow-Credentials
Accees-Control-Allow-Method
Accees-Control-Allow-Headers
Accees-Control-Request-Method
Accees-Control-Request-Headers
Accees-Control-Expose-Headers
Accees-Control-Max-Age
*跨域解决方案
cors
代理服务器(同源策略是浏览器的安全策略,不是HTTP的)
Iframe
2、登录请求向什么地址做了什么动作?
(1)使用POST方法
(2)目标域名 sso.toutiao.com
(3)目标path /quick_login/v2/
3、登录携带了哪些信息,返回了哪些信息
(1)携带信息 post body数据格式为form 希望获取的数据格式为json 已有的cookie
(2)返回信息 数据格式json 种cookie的信息
4、为什么能记住登录态
鉴权
(1)Session + Cookie
服务器生成一个Session放在set-cookie给客户端,客户端保存在cookie下次请求时一起带上给服务器识别
(2)JWT(JSON web token)
服务器生成token给浏览器,浏览器下次请求把token放在请求头Authorization中发给服务器,服务器解析验证后响应。
5、SSO单点登录
6、实战
I、AJAX之xhr
II、AJAX之fetch 使用promise 模块化设计 通过数据流处理对象,支持分块读取 node
III、标准库:HTTP/HTTPS 默认模块,无需安装其他依赖 功能有限
IV、常用请求库:axios 支持浏览器、node环境 支持拦截
8、网络优化
(1)http2优势、兼容性、简单实践、http3
(2)CDN动态加速 适用场景 缓存(回源策略、缓存刷新、缓存预热、缓存击穿) 实践
(3)DNS预解析
(4)网络预连接
(5)域名(域名收敛、发散)
(6)压缩(gzip\brotil)
(7)https性能优化(加密解密)
9、稳定性
重试机制(超时、错误)
缓存
数据安全(HTTPS、劫持)
* 重试是保证稳定的有效手段,但要防止加剧恶劣情况
*缓存合理使用,作为最后一道防线
10、通信方式
WebSocket 全双工通讯的网络技术
典型场景:实时性要求高、聊天室 url使用ws://或wss://开头
11、队头阻塞 基于UDP协议的QUIC
(1)0 RTT建联(首次除外) 类似TCP的可靠传输 类似TLS的加密传输 用户空间的拥塞控制 支持HTTP2的基于流的多路复用,但没有TCP的HOL队头阻塞问题 前向纠错