为什么有些网页打开过程会很慢?
1)网络速度慢、
2)js加载位置错误放在了html前 阻塞了页面的加载、
3)没有做资源缓存、
4)资源过大、过多、没有做压缩,没有配置到cdn
浏览器为什么第二次比第一次快?
第一次加载会dns查找ip映射,并把这个缓存到浏览器;
第二次直接读缓存,根据ip建立tcp 链接,发送http请求,这时候如果资源已经加载过的,会从本地缓存读取;
资源本地缓存的过程?
通过http头部的cache-control max-age 设置过期时间,
如果过期了 ,会在请求头上 if-none-match 来判断资源是否更新,
如果没有更新,会返回304, 继续使用该资源 ,
如果更新了,会返回最新的资源。
如何保持登录状态?
在登录的时候把客户端的用户名密码发送给服务器 ,
服务器验证过后会生成用户标识token ,并且在头部信息里塞入 set cookie,
浏览器拿到这个信息后 ,会存到本地 ,下次再进入该网站,会把本地的cookie塞入到header头部 cookie中 ,服务器去做校验
页面加载
域名解析,得到ip,找到服务器,
三次握手,服务器返回html,浏览器解析html,
请求css和js静态资源,生成dom树和css树,变成合成树,
渲染真实dom,呈现页面,请求完成后四次挥手;
优化
1)图片懒加载
2)防抖节流
3)静态资源按需加载 (import) ,放到cdn
4)服务端渲染ssr 将css放到顶部,优先渲染,js在底部
5)使用虚拟dom渲染方案,做到最小化操纵真实的dom
(虚拟dom 就是javascript 对象树, 并不实际操作dom ,并且渲染也是渲染最小单位
,所以性能高)
http 状态码
200 成功
204 请求成功 但是没有资源
301 永久重定向
304 缓存
400 客户端请求错误
401 需要http认证
403 权限问题
404 找不到服务器上的资源
500 服务器错误
502 网关错误
503 服务器超载
504 网关超时