From 124b63f325e09357164debddfcc5a943c0c3fef5 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sun, 29 Jun 2025 21:58:43 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/electron.js | 25 ++++++++++++++++++++++--- electron/utils.js | 18 ++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/electron/electron.js b/electron/electron.js index e432138d0..609209c9b 100644 --- a/electron/electron.js +++ b/electron/electron.js @@ -96,10 +96,18 @@ async function startWebServer() { return Promise.resolve(); } + // 每次启动前清理缓存 + utils.clearServerCache(); + return new Promise((resolve, reject) => { // 创建Express应用 const app = express(); + // 健康检查 + app.head('/health', (req, res) => { + res.status(200).send('OK'); + }); + // 使用express.static中间件提供静态文件服务 // Express内置了全面的MIME类型支持,无需手动配置 app.use(express.static(serverPublicDir, { @@ -113,9 +121,12 @@ async function startWebServer() { dotfiles: 'ignore', // 自定义头部 setHeaders: (res, path, stat) => { - // 对HTML文件禁用缓存,方便开发调试 - if (path.endsWith('.html')) { - res.set('Cache-Control', 'no-cache'); + const ext = path.split('.').pop().toLowerCase(); + // HTML、JS、CSS文件禁用缓存,方便开发调试 + if (['html', 'js', 'css'].includes(ext)){ + res.set('Cache-Control', 'no-cache, no-store, must-revalidate'); + res.set('Pragma', 'no-cache'); + res.set('Expires', '0'); } } })); @@ -1483,6 +1494,14 @@ ipcMain.handle('getStore', (event, args) => { return store.get(args) }); +/** + * 清理服务器缓存 + */ +ipcMain.on('clearServerCache', (event) => { + utils.clearServerCache(); + event.returnValue = "ok"; +}); + //================================================================ // Update //================================================================ diff --git a/electron/utils.js b/electron/utils.js index 24b8cb409..f7fa0f063 100644 --- a/electron/utils.js +++ b/electron/utils.js @@ -682,6 +682,24 @@ const utils = { } else { return "#FFFFFF"; } + }, + + /** + * 清理服务器缓存 + */ + clearServerCache() { + try { + // 清理require缓存中的express相关模块 + Object.keys(require.cache).forEach(key => { + if (key.includes('express') || key.includes('static')) { + delete require.cache[key]; + } + }); + + console.log('Server cache cleared'); + } catch (e) { + console.error('Failed to clear server cache:', e); + } } }