Skip to content

Commit 044ea17

Browse files
author
Taois
committed
feat: 尝试优化启动速度
1 parent bec4b1a commit 044ea17

File tree

2 files changed

+66
-92
lines changed

2 files changed

+66
-92
lines changed

controllers/index.js

Lines changed: 56 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,16 @@
55
*/
66
import formBody from '@fastify/formbody';
77
import websocket from '@fastify/websocket';
8-
// WebSocket实时日志控制器-最早引入才能全局拦截console日志
9-
import websocketController from './websocket.js';
10-
// 静态文件服务控制器
11-
import staticController from './static.js';
12-
// 文档服务控制器
13-
import docsController from './docs.js';
14-
// 配置管理控制器
15-
import configController from './config.js';
16-
// API接口控制器
17-
import apiController from './api.js';
18-
// 媒体代理控制器
19-
import mediaProxyController from './mediaProxy.js';
20-
// 根路径控制器
21-
import rootController from './root.js';
22-
// 编码器控制器
23-
import encoderController from './encoder.js';
24-
// 解码器控制器
25-
import decoderController from './decoder.js';
26-
// 认证编码控制器
27-
import authCoderController from './authcoder.js';
28-
// Web界面控制器
29-
import webController from './web.js';
30-
// HTTP请求控制器
31-
import httpController from './http.js';
32-
// 剪贴板推送控制器
33-
import clipboardPusherController from './clipboard-pusher.js';
34-
// 任务控制器(已注释)
35-
// import taskController from './tasker.js';
36-
// 定时任务控制器
37-
import cronTaskerController from './cron-tasker.js';
38-
// 源检查控制器
39-
import sourceCheckerController from './source-checker.js';
40-
// 图片存储控制器
41-
import imageStoreController from './image-store.js';
42-
// WebDAV 代理控制器
43-
import webdavProxyController from './webdav-proxy.js';
44-
// FTP 代理控制器
45-
import ftpProxyController from './ftp-proxy.js';
46-
// 文件代理控制器
47-
import fileProxyController from './file-proxy.js';
48-
import m3u8ProxyController from './m3u8-proxy.js';
49-
import unifiedProxyController from './unified-proxy.js';
50-
// WebSocket实时弹幕日志控制器
51-
import websocketServerController from "./websocketServer.js";
52-
import githubController from './github.js';
8+
9+
// 懒加载辅助函数
10+
const lazyRegister = (fastify, importFn, options) => {
11+
fastify.register(async (instance, opts) => {
12+
const module = await importFn();
13+
const plugin = module.default || module;
14+
// 使用传入的 options (全局配置)
15+
await instance.register(plugin, options);
16+
});
17+
};
5318

5419
/**
5520
* 注册所有路由控制器
@@ -62,51 +27,52 @@ export const registerRoutes = (fastify, options) => {
6227
fastify.register(formBody);
6328
// 注册WebSocket插件
6429
fastify.register(websocket);
65-
// 注册WebSocket路由
66-
fastify.register(websocketController, options);
67-
// 注册静态文件服务路由
68-
fastify.register(staticController, options);
69-
// 注册文档服务路由
70-
fastify.register(docsController, options);
71-
// 注册配置管理路由
72-
fastify.register(configController, options);
73-
// 注册API接口路由
74-
fastify.register(apiController, options);
75-
// 注册媒体代理路由
76-
fastify.register(mediaProxyController, options);
77-
// 注册根路径路由
78-
fastify.register(rootController, options);
79-
// 注册编码器路由
80-
fastify.register(encoderController, options);
81-
// 注册解码器路由
82-
fastify.register(decoderController, options);
83-
// 注册认证编码路由
84-
fastify.register(authCoderController, options);
85-
// 注册Web界面路由
86-
fastify.register(webController, options);
87-
// 注册HTTP请求路由
88-
fastify.register(httpController, options);
89-
// 注册剪贴板推送路由
90-
fastify.register(clipboardPusherController, options);
91-
// 注册任务路由(已注释)
92-
// fastify.register(taskController, options);
93-
// 注册定时任务路由
94-
fastify.register(cronTaskerController, options);
95-
// 注册源检查路由
96-
fastify.register(sourceCheckerController, options);
97-
// 注册图片存储路由
98-
fastify.register(imageStoreController, options);
99-
// 注册 WebDAV 代理路由
100-
fastify.register(webdavProxyController, options);
101-
// 注册 FTP 代理路由
102-
fastify.register(ftpProxyController, options);
103-
// 注册文件代理路由
104-
fastify.register(fileProxyController, options);
105-
fastify.register(m3u8ProxyController, options);
30+
31+
// WebSocket实时日志控制器-最早引入才能全局拦截console日志
32+
lazyRegister(fastify, () => import('./websocket.js'), options);
33+
// 静态文件服务控制器
34+
lazyRegister(fastify, () => import('./static.js'), options);
35+
// 文档服务控制器
36+
lazyRegister(fastify, () => import('./docs.js'), options);
37+
// 配置管理控制器
38+
lazyRegister(fastify, () => import('./config.js'), options);
39+
// API接口控制器
40+
lazyRegister(fastify, () => import('./api.js'), options);
41+
// 媒体代理控制器
42+
lazyRegister(fastify, () => import('./mediaProxy.js'), options);
43+
// 根路径控制器
44+
lazyRegister(fastify, () => import('./root.js'), options);
45+
// 编码器控制器
46+
lazyRegister(fastify, () => import('./encoder.js'), options);
47+
// 解码器控制器
48+
lazyRegister(fastify, () => import('./decoder.js'), options);
49+
// 认证编码控制器
50+
lazyRegister(fastify, () => import('./authcoder.js'), options);
51+
// Web界面控制器
52+
lazyRegister(fastify, () => import('./web.js'), options);
53+
// HTTP请求控制器
54+
lazyRegister(fastify, () => import('./http.js'), options);
55+
// 剪贴板推送控制器
56+
lazyRegister(fastify, () => import('./clipboard-pusher.js'), options);
57+
// 任务控制器(已注释)
58+
// lazyRegister(fastify, () => import('./tasker.js'), options);
59+
// 定时任务控制器
60+
lazyRegister(fastify, () => import('./cron-tasker.js'), options);
61+
// 源检查控制器
62+
lazyRegister(fastify, () => import('./source-checker.js'), options);
63+
// 图片存储控制器
64+
lazyRegister(fastify, () => import('./image-store.js'), options);
65+
// WebDAV 代理控制器
66+
lazyRegister(fastify, () => import('./webdav-proxy.js'), options);
67+
// FTP 代理控制器
68+
lazyRegister(fastify, () => import('./ftp-proxy.js'), options);
69+
// 文件代理控制器
70+
lazyRegister(fastify, () => import('./file-proxy.js'), options);
71+
lazyRegister(fastify, () => import('./m3u8-proxy.js'), options);
10672
// 注册统一代理路由
107-
fastify.register(unifiedProxyController, options);
73+
lazyRegister(fastify, () => import('./unified-proxy.js'), options);
10874
// 注册GitHub Release路由
109-
fastify.register(githubController, options);
75+
lazyRegister(fastify, () => import('./github.js'), options);
11076
};
11177

11278
/**
@@ -116,5 +82,5 @@ export const registerRoutes = (fastify, options) => {
11682
* @param {Object} options - 路由配置选项
11783
*/
11884
export const registerWsRoutes = (wsApp, options) => {
119-
wsApp.register(websocketServerController, options);
120-
}
85+
lazyRegister(wsApp, () => import("./websocketServer.js"), options);
86+
}

index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { performance } from 'perf_hooks';
2+
const startTime = performance.now();
3+
14
import * as fastlogger from './controllers/fastlogger.js'
25
import path from 'path';
36
import os from 'os';
@@ -35,11 +38,16 @@ const catLibDir = path.join(__dirname, 'spider/catLib');
3538
const xbpqDir = path.join(__dirname, 'spider/xbpq');
3639
const configDir = path.join(__dirname, 'config');
3740

38-
const pluginProcs = startAllPlugins(__dirname);
39-
// console.log('pluginProcs:', pluginProcs);
41+
// 异步启动插件,不阻塞主线程
42+
let pluginProcs = {};
43+
setTimeout(() => {
44+
pluginProcs = startAllPlugins(__dirname);
45+
}, 0);
4046

4147
// 添加钩子事件
4248
fastify.addHook('onReady', async () => {
49+
const endTime = performance.now();
50+
console.log(`🚀 Server started in ${(endTime - startTime).toFixed(2)}ms`);
4351
try {
4452
await daemon.startDaemon();
4553
fastify.log.info('Python守护进程已启动');

0 commit comments

Comments
 (0)