html的manifest属性已废弃,仅旧浏览器支持;manifest.json是现代pwa标准,需https/localhost、正确mime类型、非空name/short_name、合规icons及start_url等条件才被识别。

HTML 的 manifest 属性和 manifest.json 是两套完全不兼容的机制,不能混用;前者(manifest 属性)已废弃且仅支持老旧浏览器,后者(rel="manifest")是现代 PWA 的标准入口。
怎么写 manifest.json 文件才被识别
浏览器只在满足全部以下条件时才会加载并解析 manifest.json:
-
manifest.json必须放在可被 HTTPS 或localhost访问的路径下(HTTP 非本地环境会直接拒绝注册) - 服务器必须返回
Content-Type: application/manifest+json响应头;Nginx/Apache 需显式配置,Python 自带http.server默认不支持 -
name和short_name字段不可为空,icons至少含一个192x192和一个512x512的 PNG 资源,src路径需相对于 manifest 文件位置 -
start_url必须存在且能返回 200(建议设为"./index.html"或"/"),display推荐用"standalone"或"minimal-ui"
常见错误:icons 数组里写成 JPG 或 SVG、src 路径 404、manifest.json 本身返回 404 或 MIME 错误——这些都会导致 Application 面板里显示 “Manifest not found”。
manifest 属性为什么不起作用
这个属性属于已被 W3C 废弃的 AppCache 机制,Chrome 94+、Firefox 84+、Safari 16.4+ 已彻底移除支持。即使你写了:
现代浏览器也完全忽略它,不会触发任何缓存行为,也不会报错。
- 旧项目迁移时,别试图“修复”
cache.manifest—— 它的语法(如CACHE MANIFEST开头、FALLBACK:节)和缓存模型(全量缓存、更新即失效)与现代需求严重脱节 - 若必须兼容 IE10/旧 Android 浏览器,只能保留该属性并单独维护一份 AppCache 清单,但新功能开发应绕开它
-
manifest属性只允许出现在标签上,写在或其他标签里无效
怎么确认 rel="manifest" 是否生效
打开 Chrome/Edge 开发者工具 → Application 面板 → Manifest 栏,能看到结构化字段和图标预览才算成功。如果这里空白,检查以下几点:
- 页面 HTML 中是否写了
<link rel="manifest" href="/manifest.json">?路径必须正确(比如文件在根目录就写href="/manifest.json",不要写成href="./manifest.json") - Network 面板里找
manifest.json请求,看响应头是否有Content-Type: application/manifest+json;没有就说明服务器没配 MIME - 刷新页面后,在 Service Workers 面板里看不到注册记录?那说明
manifest.json加载失败或内容有 JSON 语法错误(多逗号、单引号、中文标点)
注意:manifest.json 本身不控制缓存逻辑,它只是告诉浏览器“这个网站支持 PWA”,真正做离线缓存的是后续注册的 service worker。
最常被忽略的一点:就算 manifest.json 显示正常,用户也点不了“添加到桌面”,大概率是因为没注册有效的 service worker,或者页面没通过 HTTPS(非 localhost)——这两项缺一不可。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











