获得徽章 0
- 客户端渲染是大部分前端框架渲染的方式,缺点是首屏加载不快,不利于SEO(搜索引擎优化)。而服务端渲染会让前后端耦合,不能发挥现在前端生态优势。所以出现了现代的服务端渲染,或者说同构渲染(CSR+SSR),如一些框架next.js赞过11
- Session id的问题是,大量用户访问时服务器要存储id,当服务器超载时就需要分配用户给另一台服务器,id也要分享过去,这会出现很多问题。这时出现一种技术jwt(json web token),用户第一次登陆,服务器生成jwt,服务器只会保存jwt签名密文,并把jwt发送给用户,浏览器以cookie或storage来存储jwt,若存储在cookie中,就会在每次http请求中携带。token从服务器创建,存储于客户端,持有token就像持有 令牌 一样允许访问服务器展开等人赞过75
- Http是无状态的,也就是没有记忆能力。每次http请求都会携带cookie,如果密码保存在cookie中是不安全的,这时就用到会话session,第一次登陆时,浏览器把账号密码发送给服务器,服务器核对无误后把session id(一组无规律的字符串)加入到cookie中,cookie有效期设置为会话时间并发送给浏览器。之后的每次http请求cookie都携带session id,直到会话时间结束,session id失效,就要重新输入密码了。即使session Id被黑客拿到也不能获取到用户密码。展开赞过13
- 网络线程获取数据后会检查站点,若为恶意站点则会阻止访问,通过安全校验后ui线程创建渲染器进程来渲染页面,渲染器进程将html解析,构造dom,css或图片资源不会影响html解析,因为不影响dom生成。解析时遇到script标签,先运行js。解析完html后生成dom tree,之后解析css得到样式,若没有提供自定义css,则解析浏览器默认样式。之后主线程进行layout(布局),生成一个layout tree,上面有相关节点大小和位置,但这个tree和dom tree并不是一一对应,设置display none的节点不会出现在layout tree上。z-index会影响节点绘制的层级关系,所以不能按dom结构绘制页面,这会导致错误渲染。应该根据layout tree来绘制。之后就是将像素点渲染出来,这也被称为栅格化。当改变dom节点位置或大小,会导致layout和绘制等流程重新计算,这就是重排。只改变节点颜色等属性时,只会重新进行绘制,这就叫重绘。重排和重绘都会占用主线程,布局绘制执行is都是在主线程执行的,这会导致动画卡顿。优化方法可以使用css动画transform opacity,这不占用主线程,只会在合成器线程与栅格线程中进行。展开赞过33