合并资源不能仅靠HTML中link/script顺序拼接,因浏览器仍发起多个HTTP请求;关键需服务端参与或构建工具打包,否则无法减少请求数。
和 顺序拼接直接把多个 CSS 或 JS 文件按顺序写在 HTML 里,浏览器仍会发起多个 HTTP 请求——合并不是靠“写在一起”,而是让一个请求返回多个资源的内容。关键在于服务端是否参与:纯前端静态 HTML 无法真正减少请求数,除非借助构建工具或服务端逻辑提前打包。
或 都算独立请求现代构建工具默认已做代码分割,但「合并」需主动关闭分块或显式配置入口。重点不是“能不能合”,而是“合得是否合理”:过度合并会导致首屏加载变慢,因为用户需要的只是部分样式或逻辑。
build.rollupOptions.output.manualChunks 控制拆包,设为空对象可强制全量合并(不推荐)splitChunks 即可让所有模块打进一个 bundle.js,但应仅用于小型页面export default defineConfig({
build: {
rollupOptions: {
output: {
manualChunks: {
vendor
: ['vue', 'lodash'],
ui: ['element-plus']
}
}
}
}
})把小体积的首屏必需资源直接写进 HTML 的 或 标签里,能消灭一次 HTTP 请求,但容易误伤性能。
内联脚本默认同步执行,会阻塞 DOM 构建;加 type="module" 或 defer 属性才安全Server Push 在 HTTP/2 中曾被寄予厚望,但实际已被主流放弃:Chrome 96+、Firefox 90+ 已移除支持,Nginx 也早在 1.13.10 后弃用该功能。
显式提示浏览器提前获取关键资源http2_push,建议立即删掉——它现在只增加配置复杂度,不带来收益vite.config.ts 里 build.sourcemap 是否开着(它会让生成的 JS 多一个 .map 请求)。细节比技巧更致命。