前端缓存预热到底该怎么实现?
最近在做首屏性能优化,听说缓存预热能提升后续页面加载速度,但我不太确定具体该怎么做。
比如用户刚进入首页,能不能提前把“个人中心”或“商品详情”这些高频页面的静态资源(JS、CSS、图片)悄悄加载到缓存里?我试过用 new Image().src = '/avatar.png' 预加载图片,也试过动态创建 script 标签:
const script = document.createElement('script');
script.src = '/profile.bundle.js';
script.async = true;
document.head.appendChild(script);
但这样会真的进缓存吗?还是说只是临时下载了一次?而且如果用户根本没点进去,是不是反而浪费了带宽?有没有更靠谱的方案,比如用 service worker 或者 link rel=”prefetch”?
service worker 也行但太重了,除非你要做离线应用。你之前那个动态加载的方式确实会浪费带宽,prefetch 至少有个 300ms 延迟判断用户是否真的需要。