登录

GooseForum更新月记-20250311

Passion Coding GooseForum
2025-01-15 22:51:39

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再看情况接入。

目前看如果是国内的话速度还是可以接受的。如果是外网访问,速度上是慢了一些,但是还可以接受。

2025-03-12

今天又来更新了。今天改进比较小。调整了一些默认变量,调整了用户游客页面。不过目前实现的还是不太满意,以后可能会继续调整。

  • 目前考虑会优化但是暂时不会改变的内容有,通用css。
  • nav的实现

后面可能会着重去废弃老的 actor (项目中老的前端开发目录)。 按照目前的进度来看,可以先行关闭一些老的编辑页面。 主要是老的会直接暴露存储的markdown,新的是服务端渲染会好很多(主要是考虑保护原文?实际上直接抓取html也是可以反解析出markdown)。

同时还会着重完善管理后台。

2025-03-13

今天优化的内容不多,一个是增加了站点地图的返回。 另一个是优化了不同系统之间的 go:generate 。主要问题是我发现 go:generate 是没有条件编译的,但是目前我生成前端资源前是需要删除目录后生成的。不同系统的删除命令是不一样的。这几天windows都是手动删除,然后去掉对应的 generate 命令后再执行生成。今天更改为 //go:generate go run generatetool/generatetool.go 这样的形式来操作。类似执行了一个golang小脚本。同时也庆祝一下golang最近又在不同方向发光发热(ts-go)。

abandon1a2b 楼主
2025-03-11 22:18:31

挽尊

加入讨论

登录或注册以发表评论