GooseForum更新日记-20250311
GooseForum 的诞生
GooseForum 是我受 cloudreve
启发打算搭建的一个all in one , 低依赖的一键式论坛项目。
前端采用 vue ,打包后通过 golang embed
嵌入项目之中,项目中的库使用 pure-go ,所以即使使用sqlite,也不会影响交叉编译的分发。目前主体部分基本完成,但是还存在角落上的欠缺。
同时这个项目也因为有了cursor的加入,进度变得突飞猛进。
目前项目完全运行的机子为 bin + 2个sqlite。为了方便迁移。一个sqlite存储的是业务数据,另一个存储的是图片资源。目前打算以小站的方式来运行,直到sqlite承受不住。不过目前代码还是写了mysql的配置,如果需要mysql也可以进行切换。
关于 GooseForum 的 Supervisor 配置说明 可以参考如下。
[program:goose_forum]
command = /home/lighthouse/goose_forum/GooseForum serve
directory = /home/lighthouse/goose_forum
autorestart = true
startsecs = 3
stdout_logfile = /opt/1panel/tools/supervisord/log/goose_forum.out.log
stderr_logfile = /opt/1panel/tools/supervisord/log/goose_forum.err.log
stdout_logfile_maxbytes = 2MB
stderr_logfile_maxbytes = 2MB
user = lighthouse
priority = 999
numprocs = 1
process_name = %(program_name)s_%(process_num)02d
stopsignal = TERM ; 这里可以设置为 TERM, INT, QUIT, KILL, USR1, USR2 等
stopwaitsecs = 10 ; 等待进程停止的时间,超时后会强制终止
sqlite 专项优化,这里对文件存储和业务逻辑开启wal。本地测试开启wal后并发写入场景的时间会变为不开启的1/3。
./storage/test/sqlitewal.db?_pragma=journal_mode(WAL)&_pragma=cache_size(-20000)&_pragma=synchronous(NORMAL)&_pragma=journal_size_limit(1048576)&_pragma=wal_autocheckpoint(1000)&_pragma=page_size(8192)&_pragma=busy_timeout(6000)
"journal_mode": "WAL",
"cache_size": "-20000",
"synchronous": "NORMAL",
"journal_size_limit": "1048576",
"wal_autocheckpoint": "1000",
"page_size": "8192",
"busy_timeout": "5000",
重构总结 2025-03-10
最近在进行GooseForum 的大规模重构。主要还是为了seo。同时之前前端引入了一些比较重的库,这些库,在某些情况看来不是很需要。主要更改方向的话,就是用golang模板实现首页/列表/详情等需要被收录的页面。用vue实现编辑等不需要被收录或者登录状态下才可以使用的页面。接口改动不大。主要是需要vue和golang模板需要实现nav/footer,使得项目在两种前端下的展示效果一样。目前看项目推进的很顺利。(最早这样做的是另个项目站点首页和其他页面用服务端渲染和前后端分离两种技术都在用的情况下的统一展示)
优化首页,列表小卡片,以及很慢的cdn 2025-03-11
列表的小卡片换成有效的小卡片,数据用内存进行了缓存。缓存时间5分钟,首页也是这样处理的。
其次首页列表被无用的cdn链接拖的有点慢。所以把cdn移动到了项目中。看以后是否需要cdn再看情况接入。
目前看如果是国内的话速度还是可以接受的。如果是外网访问,速度上是慢了一些,但是还可以接受。
评论列表