HTML怎么离线使用_HTML缓存策略基础配置【教程】

HTML离线运行唯一可靠方式是Service Worker,需HTTPS(localhost除外)、同源注册、两次刷新或skipWaiting生效;缓存须完整包含HTML及其依赖资源,fetch事件中按request.destination精准分流请求。HTML 离线运行靠的是 Service Worker,不是 meta 标签或 manifest 文件很多人以为加个 <meta http-equiv="Cache-Control" content="max-age=3600"> 或扔个 manifest.json 就能离线打开 HTML,实际根本不行。现代浏览器(Chrome/Firefox/Edge)已废弃 Application Cache(即 manifest),唯一可靠路径是注册并激活 ServiceWorker,它才能拦截网络请求、返回缓存资源。关键点:Service Worker 必须通过 HTTPS 提供(localhost 除外),且注册脚本必须和页面同源;注册后不会立即生效,需刷新两次或调用 skipWaiting()。只在支持 navigator.serviceWorker 的浏览器中启用,旧版 Safari 需降级处理service-worker.js 文件不能被其他缓存策略干扰(比如 Nginx 返回了 Cache-Control: no-store,会导致注册失败)首次加载页面时注册成功,但 install 事件里的缓存逻辑只对后续访问生效缓存静态 HTML 页面的正确写法:用 cache.addAll() 预加载关键资源直接 fetch index.html 并 put 到 cache 是错的------你得把 HTML + 它依赖的 JS/CSS/图片一并缓存,否则离线时 HTML 加载了,但 <script src="app.js"> 404。常见错误现象:Failed to load resource: net::ERR_FAILED 出现在控制台,但页面空白或功能缺失,本质是缓存不完整。立即学习"前端免费学习笔记(深入)";在 install 事件里用 cache.addAll('/', '/style.css', '/app.js', '/logo.png'),注意路径必须是相对根路径(/ 表示站点根目录)不要缓存带查询参数的 URL(如 /data.json?v=1.2),不同参数会被视为不同键,容易爆缓存空间HTML 文件本身建议用 Stale-While-Revalidate 策略:先返回缓存,再后台更新,避免用户看到过期内容又卡住fetch 事件里怎么判断该走缓存还是网络:优先匹配 HTML,其余走缓存兜底Service Worker 的 fetch 事件是离线逻辑的核心开关。不能无差别缓存所有请求(比如 API 接口不该离线返回旧数据),也不能全走网络(那就没离线意义)。 Trenz AI驱动的社交电商营销平台,专为TikTok Shop设计

相关推荐
IvorySQL2 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
刘胡子大叔2 小时前
SQL 脚本的导入顺序
数据库·sql
代码什么用3 小时前
Spring对IoC的实现
数据库·spring
晒太羊的猫4 小时前
jvm面试题
jvm
全栈练习生4 小时前
AI Agent 沙箱
python·ai
hz567895 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC5 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday5 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
半杯咖啡半行码5 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt
SEO_juper5 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站