90%是缓存或路径错位导致:uniapp需改public/index.html并配置manifest.json的h5.template;vue cli/vite开发时读内存中版本;浏览器、nginx、cdn缓存均需清理;务必右键“查看网页源代码”确认修改位置正确。

改了 index.html 却不生效,90% 是缓存或路径错位导致的,不是代码写错了。
确认你改的是编译后真正被加载的文件
很多框架(如 UniApp、Vue CLI、Vite)在开发时并不直接读取项目根目录下的 index.html,而是用它作模板生成最终产物。比如:
- UniApp:必须把修改放在
public/index.html,并在manifest.json中显式声明:"h5": { "template": "public/index.html" } - Vue CLI:根目录
index.html就是源模板,但构建后输出在dist/index.html;开发时热更新依赖 webpack-dev-server,它托管的是内存中的版本,不读磁盘文件 - Vite:同理,开发服务器运行时
index.html是被解析并注入脚本标签的,但修改后需触发 HMR,若引入了外部 JS/CSS 且用了相对路径(如./js/app.js),刷新时可能 404 —— 改成绝对路径/js/app.js或确保 public 目录结构匹配
浏览器和 Nginx 层面的缓存干扰最常见
即使代码改对了,浏览器或反向代理也可能返回旧内容:
- Chrome 用户:先按
F12打开开发者工具 → Network 标签页 → 勾选Disable cache,再Ctrl+Shift+R硬刷 - Nginx 用户:默认开启
sendfile on,会导致静态文件绕过缓存控制逻辑;临时调试可改为sendfile off,并重启 Nginx - CDN 用户:源站改完 ≠ CDN 刷新,需手动触发对应 URL 的缓存剔除(如腾讯云 CDN 控制台「预热刷新」)
动态插入的内容不会自动更新 DOM
如果你在 index.html 里写了类似 <div id="app"></div>,然后靠 JS 渲染内容,那改 HTML 模板本身只影响首次加载的壳,后续页面跳转、路由切换、API 数据填充都走 JS 逻辑 —— 此时要检查:
- 是否误在
mounted()或onLoad里硬编码了标题/描述,覆盖了 HTML 中的<title></title>或<meta> - H5 平台下想改 meta,不能只改 HTML 源码,得用 JS 动态操作:
document.querySelector('meta[name="description"]').setAttribute('content', '新描述') - 某些构建工具(如 gulp-livereload)监听配置错误,
gulp.watch没覆盖到index.html路径,或server.changed()调用失败,导致变更未通知浏览器重载
最容易被忽略的是:你以为自己在改 index.html,其实编辑器打开的是另一个同名文件(比如 src/index.html 或 unpackage/dist/build/h5/index.html),而服务实际读取的是内存或 dist 目录。动手前先右键浏览器 → 「查看网页源代码」,确认看到的内容是否和你编辑的一致。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











