Calibre-web 个人图书库搭建记 10 结合对象存储和云存储做加速

calibre-web 程序放在腾讯云中,用了腾讯云的cos对象存储来放置图书库。可以让书库容量变得接近无限大。

为了充分发挥对象存储的优势,通过修改模板文件和代码程序,把calibre-web 的缩略图和图书下载阅读都直接使用了对象存储的cdn访问。这样既能提高用户下载速度,又可以节约python转发对象存储内容的服务器算力,要让对象存储的请求数减少一些。cos对象存储的访问域名和对应的对象存储cdn域名是单独两个,直接使用对象存储域名还是cdn域名也是各有优缺点。

cdn域名可以对资源进行加速和缓存,而且能抵消一些免费cdn流量,用上cdn以后如果用户少也许空中率会没有这么高,基本还是回源访问的话达不到加速效果还损失下载时间。cdn另外一点是不能再通过对象存储的加密访问来防止盗链资源的发生。cdn加速效果和加密访问资源这个在后面需要继续测试和改进。

腾讯云的对象存储的图片处理是优图单独提供的服务,而优图又基于cos对象存储实现的存储和访问。这样虽然可以直接选用cos的存储桶直接用优图服务,但也还需要再单独开通服务和增加一套对象存储的优图域名和cdn域名。图片路径也需要再单独配置一下,我还是继续选用优图对象存储的cdn域名使用。

电子书的封面图一般都是高清大图,我通过优图直接把cos对象存储的图片做压缩缩小使用。开始是把calibre-web用到的缩略图用多大尺寸缩小成多大使用,但在高清屏上总感觉缩略图模糊,后来调成双倍尺寸的缩略图就变得清晰多了。

这样可以节约calibre-web通过python转发文件对服务器和带宽的消耗,减少对象存储的数据库请求数。节约静态资源的运算和转发消耗,让服务器重点提供web和数据库服务。

这么做主要是为了适应cos的独立存储架构,另外通过直接走cos域名和cdn域名也是为了腾讯云的cos对象存储和cdn使用在正式环境中到底能产生多少费用。现在这些服务的计费太复杂,又有存储费、请求次数费,还有流量费、回源流量费各种各样的计费模式,如果不熟悉自己的业务数据,根本无从选择到底要用那种云服务和定价策略比较划算。

之前说在cos对象存储使用cdn会影响文件访问的鉴权功能,但我现在还没修改cos对象存储为私有存储桶,这样不能使用对象存储的鉴权读取防止恶意下载用户的批量下载,提高一下盗链成本。

除了加密下载cos内容功能以外还要再考虑一下其他的功能改进,cos的请求数通过挂载磁盘的方式还用的挺多的,后面考虑不用挂载如何处理cos文件的访问。另外发现图书的在线阅读目前是把图书解压到静态文件目录来缓存,这也可能撑爆服务器磁盘,这个需要研究如何把静态目录也用对象存储来解决。

后续工作还有很多,书库扩充,运营推广,说明文档增加,系统改造,运营推广。


这一系列文章并没有什么具体的技术细节,开了个QQ交流群(72239907),方便大家交流读书、技术问题、图书资源共享。如果有什么软件安装等问题也可以加 calibre 交流群的QQ群(72239907)进行交流。
点击链接加入群聊【爱读书 读好书 calibre】:https://jq.qq.com/?_wv=1027&k=5vYWQsV