-
大文件上传到底该让浏览器把数据交给业务服务,还是直接送到对象存储?本文从流量路径、分片重试、权限边界和完成校验四个维度比较两种方案,并给出基于 Blob.slice、预签名 URL 与 uploadId 的可落地实现边界。
-
PWA 发布新版本后,用户仍看到旧页面,通常不是浏览器完全没有更新,而是旧页面、waiting 状态和缓存版本同时存在。本文用一个可落地的 Service Worker 更新流程,讲清缓存命名、skipWaiting、clients.claim、提示刷新和回滚检查。
-
长列表页面首屏慢时,可以先用 content-visibility: auto 跳过屏外渲染,再用 contain-intrinsic-size 给布局一个合理占位。本文用一组可复现的列表场景说明如何测量收益、避免滚动条跳动,并给出不适合使用的边界。
-
前端上线后用户仍看到旧页面,通常不是重新部署失败,而是 HTML、静态资源缓存和 Service Worker 的更新边界没有分开。本文用一套可回滚的发布检查,讲清 Cache-Control、文件指纹、CDN 缓存刷新和浏览器验证如何配合。
-
批量导入 CSV 时,解析、校验和结果展示最好拆成可观测的前端流水线:主线程只负责触发与通知,Web Worker 分片处理数据,队列状态和失败原因由明确的质量门禁收口。
-
同一个后台系统开两个标签页时,登录态、筛选条件或草稿状态很容易互相覆盖。本文用 BroadcastChannel 搭一个可验证的同步层,处理消息去重、版本冲突、页面关闭和不支持时的降级边界。
-
CSS 的 height:auto 过去很难直接做平滑过渡。本文从 max-height 和 JavaScript 测量的旧方案切入,演示 interpolate-size: allow-keywords 的最小改造,并核对继承范围、浏览器降级与 prefers-reduced-motion 边界。
-
前端上传几百 MB 文件时,真正容易卡住的不是单个请求,而是分片队列、并发窗口和失败重试互相放大。本文用浏览器 File.slice、Promise 队列和服务端分片状态,拆解从一次性上传改成可暂停、可续传方案时的架构取舍。