内容提要
文章讨论了如何通过修改 Ghost 博客系统的配置文件,将 jsdelivr CDN 资源替换为自托管版本,从而显著提高页面加载速度,从30秒优化到300毫秒。此外,作者搭建了一个简单的 jsdelivr 代理,以便于后续更新和管理。
延伸解读
问题根源:Ghost 核心模块的 CDN 依赖
文章指出,Ghost 从某个版本开始,在会员系统(portal)、评论系统(comments)和页面搜索(sodo-search)等核心模块中默认引用了 jsdelivr CDN 资源。这些资源加载缓慢,导致页面加载时间长达 30 秒。对于自建博客的用户来说,这违背了追求加载速度可控的初衷。因此,解决思路是替换这些 CDN 链接,而非禁用功能。
自托管配置的关键:正确放置静态文件
文章强调,不能将自托管文件随意放在 /var/lib/ghost/content/public 下,因为该目录下的文件是单独绑定的,不会自动映射。正确做法是放在 images、media 或 files 等已映射的静态文件夹中。作者选择 files/self-host 目录,并通过环境变量(如 portal__url)覆盖默认配置,简化了 Docker 部署下的管理。
优化效果与后续更新方案
通过自托管替换,页面首次加载速度从 30 秒提升至 300 毫秒,效果显著。但 Ghost 经常更新,手动复制文件繁琐。作者后续搭建了一个简单的 jsdelivr 代理(如 cdn.mythsman.com/jsdelivr/),只需在 docker-compose 中配置代理链接,即可自动获取最新版本资源,兼顾速度与维护便利。
Q&A
如何解决 Ghost 博客系统中 jsdelivr 资源加载慢的问题?
通过修改 config.[env].json 文件,将 jsdelivr CDN 资源替换为自托管版本,可以显著提高页面加载速度。
自托管文件应该放在哪个文件夹中?
自托管文件应放在 /var/lib/ghost/content/files/self-host 文件夹中,而不是 /var/lib/ghost/content/public 下。
优化后页面加载速度提升了多少?
优化后,页面首次加载速度从 30 秒提升至 300 毫秒。
如何搭建 jsdelivr 代理以简化文件管理?
可以搭建一个简单的 jsdelivr 代理,通过配置 docker-compose 来使用代理地址,简化文件管理和更新过程。
Ghost 博客系统中哪些功能导致了加载速度变慢?
加载速度变慢主要是由于引入了会员系统、评论系统和页面搜索功能,这些功能使用了 jsdelivr CDN 的资源。
如何通过环境变量配置自托管文件?
可以通过在 docker-compose 中设置环境变量,直接映射自托管文件的路径,简化配置过程。