vue3+vite 前端打包不缓存配置

最近遇到前端部署后浏览器得清缓存才能出现最新页面效果得问题
所以…按以下方式配置完打包就没啥问题了,原理很简单就是加个时间戳

/* eslint-disable no-undef */
import {defineConfig, loadEnv} from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
const nowTime = new Date().getTime()
// https://vitejs.dev/config/
export default defineConfig(({mode, command}) => {
	const env = loadEnv(mode, process.cwd())
	const {VITE_APP_ENV} = env
	return {
		// 部署生产环境和开发环境下的URL。
		// 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
		base: VITE_APP_ENV === 'production' ? '/' : '/',
		plugins: createVitePlugins(env, command === 'build'),
		resolve: {
			alias: {
				// 设置路径
				'~': path.resolve(__dirname, './'),
				// 设置别名
				'@': path.resolve(__dirname, './src'),
				UTILS: path.resolve(__dirname, './src/utils'),
			},
			// https://cn.vitejs.dev/config/#resolve-extensions
			extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
		},
		css: {
			preprocessorOptions: {
				scss: {
					// additionalData: `@use "@/assets/styles/variables.module.scss" as *;`,
				},
			},
			postcss: {
				plugins: [
					{
						postcssPlugin: 'internal:charset-removal',
						AtRule: {
							charset: (atRule) => {
								if (atRule.name === 'charset') {
									atRule.remove()
								}
							},
						},
					},
				],
			},
		},
		build: {
			rollupOptions: {
				output: {
					manualChunks(id) {
						if (id.includes('node_modules')) {
							return 'vendor'
						}
						// if (id.includes('components')) {
						//   return 'components'
						// }
						return null // 不需要特殊处理的模块
					},
					chunkFileNames: ({name}) => {
						if (name === 'vendor') {
							return `assets/js/[name]-[hash].js` // 第三方库不添加时间戳
						} else {
							return `assets/js/[name]-[hash]-${nowTime}.js` // 自定义文件名,使用时间戳保证唯一性
						}
					},
					entryFileNames: ({name}) => {
						if (name === 'vendor') {
							return `assets/js/[name]-[hash].js` // 第三方库不添加时间戳
						} else {
							return `assets/js/[name]-[hash]-${nowTime}.js` // 自定义文件名,使用时间戳保证唯一性
						}
					},
					assetFileNames: `assets/[ext]/[name]-[hash].[ext]`, // 资源文件添加时间戳
				},
			},
		},
	}
})


重点是这个

在这里插入图片描述

在这里插入图片描述

打包后的效果截图
在这里插入图片描述

### Vue3Vite 应用性能优化技巧 #### 1. 编译时优化策略 对于基于 Vite 的构建工具而言,尽管其提供了快速冷启动和即时热更新等功能,但这并意味着无需关注其他方面的优化。为了实现更优的编译效果,应考虑采用按需加载的方式引入资源文件,减少必要的模块打包进入初始页面中;同时利用 Tree Shaking 技术移除未使用的代码片段,从而减小程序体积并加快下载速度[^1]。 ```javascript // vite.config.js 配置示例 import { defineConfig } from &#39;vite&#39;; export default defineConfig({ build: { rollupOptions: { output: { manualChunks(id) { if (id.includes(&#39;node_modules&#39;)) { return id.toString().split(&#39;node_modules/&#39;)[1].split(&#39;/&#39;)[0]; } }, }, }, }, }); ``` #### 2. 运行时内存管理 在运行期间保持良好的内存占用状态同样重要。可以通过懒加载组件来降低初次渲染所需的时间成本以及减轻浏览器的压力;另外,在处理大型列表或表格数据展示时,推荐使用虚拟滚动技术只渲染可见区域内的DOM节点,以此提高交互流畅度[^4]。 ```html <!-- 懒加载组件 --> <template> <Suspense> <template #default> <MyComponent /> </template> <template #fallback> Loading... </template> </Suspense> </template> <script setup lang="ts"> const MyComponent = defineAsyncComponent(() => import(&#39;./components/MyComponent.vue&#39;)); </script> ``` #### 3. 微前端架构设计 当面对复杂的企业级应用场景时,采取微前端模式能够有效解决单体应用臃肿的问题。通过划分独立业务单元各自负责特定功能模块,并允许它们单独部署上线而影响整体系统的稳定性。这仅有助于团队协作分工更加清晰高效,也能显著提升用户体验质量。 #### 4. 利用现代浏览器特性 充分利用现代浏览器所提供的新特性和API接口也是容忽视的一环。例如Service Worker缓存机制可以在离线状态下依然保证网页正常访问;而Intersection Observer则可用于监测元素可视情况进而触发相应的逻辑操作,如图片延迟加载等[^2]。 ```javascript if (&#39;serviceWorker&#39; in navigator) { window.addEventListener(&#39;load&#39;, () => { navigator.serviceWorker.register(&#39;/sw.js&#39;).then(registration => { console.log(&#39;SW registered:&#39;, registration); }).catch(error => { console.error(&#39;SW registration failed:&#39;, error); }); }); } ``` #### 5. 定期评估与调整 最后但并非最重要的一步就是定期运用诸如Google Lighthouse这样的第三方评测工具对自己的网站进行全面体检,获取关于性能表现的具体分数评级及改进建议。根据这些反馈信息断迭代完善现有措施直至达成预期目标为止。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九亿少女无法触及的梦ى

您的赞赏,对我来说意义非凡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值