面试题答案
一键面试压缩文件
- 原理:通过压缩工具(如 gzip、Brotli 等)减少文件大小,降低传输过程中的数据量。gzip 采用 Lempel-Ziv 编码(LZ77)和 Huffman 编码,Brotli 基于 LZ77 与 Huffman 编码并结合其他优化,更高效压缩。
- 适用场景:所有静态资源,如 CSS、JavaScript、图片等,在网络传输环节,能显著提升加载速度,尤其在带宽有限或对加载性能要求高的场景。
缓存控制
- 原理:设置 HTTP 缓存头(如 Cache-Control、Expires 等)。Cache-Control 用 max-age 定义资源在客户端缓存的时长;Expires 指定资源过期的绝对时间。客户端下次请求时,若资源在缓存期内,直接从本地读取,减少服务器请求。
- 适用场景:不经常更新的静态资源,如样式库、通用脚本库等。可降低服务器负载,加快用户端访问速度。
代码拆分与按需加载
- 原理:将大的 JavaScript 或 CSS 文件拆分成多个小文件,根据实际需求加载。在 JavaScript 中使用动态
import()
语法实现按需加载模块。当特定功能需要时才加载相应代码,减少初始加载体积。 - 适用场景:大型单页应用(SPA)中,用户并非一开始就需要所有功能代码。比如一个电商应用,商品详情页相关代码可在用户进入商品详情页时按需加载。