
Grav 采用与 WordPress 或 Joomla 完全不同的方法 — 它根本不使用数据库,而是直接将内容存储为服务器上的 Markdown 文件。本指南解释了"平面文件 CMS"的工作原理、其优势和局限性,以及它适合的项目类型。
Grav 和平面文件 CMS 概念
Grav 于 2014 年由 RocketTheme 团队推出,用 PHP 构建。与众不同之处在于它不需要 MySQL 或任何数据库。每个内容页面都存储为 Markdown 文件,配置使用 YAML 文件,主题使用 Twig 构建。整个网站就是一个"文本文件文件夹",您可以直接读取和编辑。
没有数据库的网站如何工作
典型的 CMS(如 WordPress)必须在每次用户打开页面时从 MySQL 数据库提取内容。Grav 直接从文件系统读取 Markdown 文件并缓存结果。这消除了数据库查询步骤,因此不经常更改内容的页面响应速度很快 — 备份很容易:只需复制整个文件夹即可。
不依赖数据库的优势
- 易于安装 — 解压缩并上传,就可以工作;无需创建数据库
- 简单迁移 — 将文件夹复制到新主机,完成
- 完全 Git 友好 — Markdown 文件适合版本控制,具有完整的编辑历史
- 较少的数据库端漏洞 — 没有 MySQL 意味着没有数据库层 SQL 注入风险
Grav 与其他流行 CMS 选项的比较
选择正确的 CMS 取决于项目的性质和团队的技能。下表总结了主要差异。
| CMS | 数据库 | 最适合 | 插件生态 |
|---|---|---|---|
| Grav | 不需要 | 投资组合、文档、着陆页 | 小但精心挑选 |
| WordPress | 需要 MySQL | 博客、商店、通用网站 | 非常大(60,000+ 个插件) |
| Joomla | 需要 MySQL | 企业网站、中型门户 | 中等 |
| Hugo / Jekyll | 无(静态生成器) | 开发者博客、文档 | 小;需要 CLI 知识 |
使 Grav 不适合每项工作的局限性
平面文件方法有其权衡。Grav 的社区远小于 WordPress,因此可用的插件和主题较少。Grav 没有内置购物车,因此不适合在线商店。一旦内容增长到数千或数万个页面,从文件系统读取文件会比索引数据库更慢 — 因此 Grav 更适合小型到中型网站。
在托管中分 3 步安装 Grav
由于 Grav 是不需要数据库的 PHP 应用程序,在共享主机上安装非常容易。首先,下载 Grav 包(建议使用包含 Admin 插件的版本)。其次,通过 DirectAdmin 文件管理器将 ZIP 上传并提取到您想要的文件夹中。最后,打开网站 URL 创建您的管理员账户 — 然后您可以开始编写内容。
兼容性:Grav 只需要带有标准扩展的 PHP 8.x。AsiaGB 托管在 SSD 上支持 PHP 8.2 / 8.3,因此无需数据库配置即可立即运行 Grav。
Grav 中的文件结构和内容编写
在 Grav 中,每个页面都是包含 Markdown 文件的文件夹。文件夹层次直接映射到 URL 结构。例如,user/pages/01.home/ 处的文件夹提供主页,user/pages/02.about/ 提供 /about。
每个文件夹内的内容文件名为 default.md(或以您想要使用的模板命名)。它以 YAML 前置块开始,用于设置标题、描述和其他页面选项,然后是用标准 Markdown 编写的内容。基本示例如下所示:
---
title: 关于我们
description: 了解我们的公司
---
## 关于我们
此页面内容以标准 **Markdown** 编写。
这种方法的主要优势是即时 Git 兼容性。每个页面的每次更改都可以用 git log 追踪,用 git revert 回滚 — 这些是开发人员已经知道的工具。迁移或协作时无需导出和导入数据库转储。
Grav 中的关键插件和主题
虽然 Grav 生态系统比 WordPress 小,但可用的插件涵盖了大多数项目的核心需求。所有插件都通过 Grav 包管理器(GPM)从命令行或通过 Admin Panel 安装。
- Admin Panel — 基于浏览器的管理界面,用于编写内容、管理主题和安装插件。建议从一开始就选择 — 选择 Grav + Admin 下载。
- SEO — 自动向所有页面添加元标记、Open Graph 数据和结构化数据,无需手动编码。
- Form — 构建完全通过 YAML 配置的联系表单和数据收集表单 — 无需 PHP。
- Sitemap — 从文件夹结构自动生成
sitemap.xml,使搜索引擎轻松索引所有页面。 - Error — 提供干净、主题一致的 404 和错误页面。
- Login — 添加具有访问控制页面的成员系统,适合简单的客户端门户或受保护的文档。
维护和更新 Grav
Grav 的更新过程比数据库驱动的 CMS 平台更简单,因为没有数据库迁移脚本需要担心。可以直接从 Admin Panel 或通过命令行上的两个 GPM 命令应用更新。
bin/gpm selfupgrade # 更新 Grav 核心
bin/gpm update # 更新所有插件和主题
由于每个文件都是纯文本,备份很简单。只需存档 user/ 文件夹,其中包含所有内容、主题、插件和配置。如果您已经在使用 Git,备份是自动的 — 每次提交都保留网站在该时刻的完整状态,使恢复快速可靠。
Grav 最擅长的是什么
Grav 非常适合投资组合、着陆页、文档网站和小公司网站,其内容不经常更改 — 特别是对于熟悉 Markdown 并希望通过 Git 管理网站的团队。需要成员系统、商店或大量内容的工作应选择专门为此设计的 CMS。
常见问题
Grav 能建立在线商店吗?
这不是理想选择 — Grav 没有内置购物车。要销售产品,请使用 WooCommerce 或 OpenCart。
没有数据库的网站会很慢吗?
对于小型到中型网站,Grav 通常更快,因为它跳过了数据库查询步骤。对于拥有数万个页面的网站,数据库系统更有优势。
它需要很多技术知识吗?
对 Markdown 和 YAML 有一些了解会很有帮助,但配置 Admin 插件的版本提供了基于网络的管理界面,使其更易于使用。