[TOC]
DocHub 是使用 Go 语言的 Beego 框架实现的文库方案,使用对商业友好的 Apache2.0 开源协议进行开源,支持 office 文档、PDF 文档、txt、epub、mobi 等多种格式文档的在线阅读和浏览。
1. OSS 存储代码封装优化。
review 了一下之前自己封装的 OSS 代码,感觉太乱了...
2. 重新设计登录页面。
之前的登录页面确实丑 (不过现在的登录页面好像也好不到哪儿去...)
3. 用户头像和文档封面等默认图片优化
在加载图片的时候直接在前端使用onerror
,不再在后端查询 OSS 中图片是否存在以及不存在时返回默认图片,以便节省 OSS 请求资源。
所以,现在不需要再把默认图片上传到 OSS,然后再在配置文件里面配置默认图片的地址了
4. 配置文件优化
所有相关配置项,为了配置的方便,都统一放到 app.conf 文件中。 配置文件中的每一项,都加上了详尽的配置说明。
app.conf 文件,放在conf
目录下,app.conf.example
的文件就是了,把.example
扩展名去掉就好
5. mobi、epub、chm、txt 等格式文档在线浏览的实现支持。
目前 DocHub 文库经实测支持在线阅读的文档格式如下:
Word 文档:doc,docx,rtf,wps,odt
Excel 文档:ppt,pptx,pps,ppsx,dps,odp,pot
PPT 文档:xls,xlsx,et,ods
PDF 文档:pdf
其他文档:txt,epub,mobi,chm
umd 格式文档暂不支持在线阅读,chm 格式文档在线阅读实现效果并不是很好,文档内容顺序会错乱。
相信 DocHub 文库系统对文档格式的支持比网上的一些收费文库系统对文档格式的支持还要多了吧。
有收到网友建议,建议使用onlyoffice
、Collabora
、flash paper
、pdf.js
等实现文档在线阅读的方案。
集思广益,非常感谢大家积极提意见和建议。
然后我也认真的去体验和测试了。就拿onlyoffice
来说,我在 docker 下玩了下 (我的 docker hub : https://hub.docker.com/r/truthhun/onlyoffice/ ),每次都进行文档转换,太耗费服务器资源了,而且,用户可以直接拿到下载文档,相信这是很多站长不愿看到的。
而且用户需要把整个文档加载下来才能阅读,也比较耗费带宽资源。新浪爱问共享资料
都用图片作为文档在线阅读实现方案,相信他们也是有这一层面的考虑的,所以,我们跟着大佬走。
6. 解决邮件无法发送的问题
统一使用 SMTP 发送邮件,并实现对 TLS/SSL 邮件的发送支持。使用了https://github.com/go-gomail/gomail库 。
有网友在群里反馈说邮件发不出去...由于没人帮我测试,我现在是自己开发自己测试,基本都是自己测试通过了没问题了就默认这个功能没问题了,很多场景可能考虑不到,所以有些问题我自己还是难以发现,并没有把大家当小白鼠...
7. 文档阅读页面性能优化
之前的文档阅读页面,当文档翻的页数越多,页面会越来越卡,直到卡死在那里(巨大的 Bug)...
这是前端 js 对文档的svg
重复计算造成的,比如我翻到第 100 页,每次滚动一下鼠标,差不多就要触发 3000 多次对svg
图片位置的计算,以便确定用户当前阅读到了哪一页,以及触发哪一页的懒加载...
8. 文档预览页数限制
可在管理后台
->系统设置
->文档最大预览页数
做限制。
这样的好处就是,如果一个 300 页的文档,只提供 100 页给用户阅读,就可以减少服务器后端 PDF 后 200 页文档转 svg 的资源开销。
不提供大文档的全文档给用户阅读,既可以节省服务器资源,也可以促进用户使用积分下载文档...新浪爱问共享资料就是这么干的...
目前只写了docker
的安装部署教程,部署教程地址:https://www.bookstack.cn/read/dochub/docker
DocHub 文库系统,目前并不是很完美,移动端 WAP 站点和微信小程序还没开发,但是,我在努力!
管理后台:http://dochub.bookstack.cn
管理员账号密码均为admin
登录验证码是:芝麻开门