掘金随笔记录

81 阅读2分钟

1.小程序和 h5 架构上有什么不同

h5和小程序的核心都是webview

h5类似于传统web应用,先打开一个webview容器,然后正常的进行请求资源,加载数据,绘制页面等等,仍然采用单线程,所以渲染线程和js线程会互相阻塞

h5的通信流程由dom去驱动

小程序采用双线程,将渲染和逻辑分离到不同的线程中,去提高渲染的速度和效率

小程序的通信流程由事件传递给native,native传递给逻辑层,逻辑层处理完毕后返还给native,native传递给渲染层

2. prefetch与离线包

实现思路是利用H5浏览器自带的prefetch能力。通过将离线包资源聚合到单个HTML中,APP启动后使用WebView提前加载HTMLWebView会下载资源到设备中。同时可以直接复用WebView自带的离线缓存能力和差异化资源更新能力

  • preload针对的资源是当前页面需要的资源,下载的优先级很高
  • prefetch针对的资源是下个页面需要的资源,下载的优先级很低,有空的时候才下载

鉴权

juejin.cn/post/712929…

1. session&cookie 方法

cookie保存在客户端,session保存在服务端。

账号密码登录后,服务端会生成一个sessionId返还给客户端,客户端拿到后存在cookie,后续客户端的所有请求,都会携带cookie = sessionId,服务端会校验session,成功过后返回正确数据

image.png

###2. JWT与token

账号密码登录后,服务端会生成一个加密的token令牌,客户端拿到后存在本地(如cookie),后续客户端的请求,会将token放在http的请求头header的authorization里,服务端会对token做解密和签名校验

jwt的组成: header,payload,signature

image.png

jwt的局限与解决:

xss攻击,客户端设备丢失或者私钥被破解会导致jwt被窃取的风险

应对办法: token的时效性,限制token只能在特定的ip或者设备上使用,对称加密算法下,使用强密钥对来确保 JWT token 的安全

###3. SSO(单点登录)

在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

image.png

###3. OAuth(第三方登录)