Ghost 解决 jsdelivr 资源加载慢的问题

Ghost 解决 jsdelivr 资源加载慢的问题

💡 原文中文,约5500字,阅读约需14分钟。
📝

内容提要

文章讨论了如何通过修改 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 中设置环境变量,直接映射自托管文件的路径,简化配置过程。

🏷️

标签

➡️

继续阅读