问题集
OPTIONS 预检请求过多,如何减少?
access-control-max-age 控制 OPTIONS 缓存时间 1 年
跨域请求, GET 以外非简单请求,如 POST,content-type 为 application/json 复杂型都会发送 OPTIONS
JSONP
通过 script 标签加载跨域脚本,跨域脚本执行 callback 的形式实现跨域获取数据. 本质是 script 的 src 可以绕过同源策略. 允许页面引入第三方资源,当然可以通过 Content-Security-Policy(CSP) 进行限制 JSONP 场景:
- 跨域
webpack代码懒加载, 路由懒加载array.push重封装
CICD
持续集成,持续部署, 自动化操作. 利用托管平台的钩子,优化开发流程,自动执行校验、打包、发布
git hooks-> localweb hookspushpull
雪碧图
多个图片合一,减少请求 webpack 小图片转 Data URL: Base64
Base64 为什么体积增加
增加大概三分之一
- 每一个
utf-8字符:8bit - 每一个
Base64字符:6bit(2^6=64)
3 个 utf8 字符,用了 24 位二进制表示,转 Base64 时,每一个 Base64 字符是 6 位二进制,需要 4 个 Base64 字符才能表示完这 24 位 。这 4 个 Base64 字符最终还是需要 utf8 存储. 增大了 (4-3)/3 = 1/3
图片懒加载
是否在视图窗口内
Intersection Observer APIprefetch预加载,视图内提前加载, 方便跳转
js
const intersectionObserver = new IntersectionObserver((entries) => {
// 如果 intersectionRatio 为 0,则目标在视野外,
// 我们不需要做任何事情。
if (entries[0].intersectionRatio <= 0) return;
loadItems(10);
console.log('Loaded new items');
});
// 开始监听
intersectionObserver.observe(document.querySelector('.scrollerFooter'));