1. 项目定位与用途
Ava CMS 是一个面向个人和小型团队的现代平面文件内容管理系统。其定位是提供一个'用户能够完全理解、自由迁移、平滑扩展并长期维护'的网站构建方案。与传统的数据库驱动 CMS 不同,Ava 将内容以纯文本文件(Markdown)形式存储在文件系统中,使得内容管理回归简单本质:创建或编辑文件,刷新浏览器即可看到变化。系统不仅支持 Markdown 写作,还允许在需要时直接嵌入 HTML 以获得完全控制。其用途涵盖个人网站、博客、作品集、数字花园、文档站点等多种场景,特别适合追求内容所有权、技术自主权和部署简洁性的用户。
2. 解决的问题
Ava CMS 主要解决传统内容管理系统的三大痛点:复杂性、锁定性和不透明性。传统 CMS 通常依赖数据库存储内容,导致内容被锁定在特定系统中,迁移困难;同时复杂的后台界面和插件生态增加了学习成本和维护负担;部署流程往往涉及多个步骤,不够直观。Ava 通过平面文件架构彻底消除数据库依赖,使内容以通用 Markdown 格式存在,随时可读可迁;即时反馈机制省去构建步骤;Plain PHP 模板系统避免抽象层,让用户直接控制输出。此外,系统提供内容类型、分类、短代码等结构化功能,在保持简洁的同时满足专业需求。
3. 适用场景
Ava CMS 适用于多种内容发布场景。个人网站建设者可以用它快速搭建展示型站点;博主享受 Markdown 写作的流畅体验和即时发布;创作者能构建作品集以展示项目;知识管理爱好者可打造数字花园,以非线性的方式组织笔记;技术文档团队能利用其分类和搜索功能构建文档中心。系统特别适合以下用户:偏好文件编辑器而非 Web 后台的开发者;希望完全掌控网站代码和内容的 technically-minded 创作者;需要将网站作为版本控制项目进行管理的团队;以及寻求轻量级、无数据库依赖解决方案的个人。对于需要复杂用户权限管理、多语言支持或电子商务功能的大型项目,当前版本可能不够成熟。
4. 安装方式
根据仓库提供的配置示例,Ava CMS 的安装需满足以下条件:PHP 8.3 或更高版本运行环境;Composer 依赖管理工具。基本步骤包括:首先通过 Git 克隆仓库或下载发行版;在项目根目录执行 `composer install` 安装最小依赖集(包括 league/commonmark 和 symfony/yaml);配置 Web 服务器(如 Nginx),将文档根目录指向 `public/` 文件夹,可参考 `nginx.conf.example` 进行安全设置,该示例包含 SSL 配置、敏感文件拦截等生产环境建议;最后通过 `./ava` CLI 工具执行初始缓存构建或诊断命令。项目提供 `ava` 可执行文件(定义于 composer.json 的 bin 字段),便于日常管理。注意,由于项目处于早期开发阶段,建议在测试环境先行验证。
5. 使用方式
Ava CMS 的使用流程围绕文件编辑和配置调整展开。内容创作:在 `content/` 目录下创建 Markdown 文件(如 `content/pages/about.md`), front matter 支持 YAML 元数据,正文使用 Markdown 语法,保存后刷新浏览器即可生效。内容建模:通过修改 `app/config/` 目录下的配置文件定义内容类型(`content_types.php`)和分类体系(`taxonomies.php`),系统支持自定义字段和关系。主题开发:在 `app/themes/` 目录创建或修改 PHP 模板,系统提供模板辅助函数,支持 partials 和 assets 管理。功能扩展:通过 `app/plugins/` 目录添加插件,利用钩子系统介入内容流程;内置插件包括 sitemap、redirects 和 feeds。日常管理:使用 `ava` CLI 工具执行缓存清理、索引重建、状态检查等命令。系统还支持短代码和片段,可在 Markdown 中插入动态内容块。
6. 补充说明与实现特点
Ava CMS 在实现上采用多项技术特性以确保性能与灵活性。内容存储采用平面文件,但通过 `core/Content/` 模块的索引器(Indexer)和两种后端(ArrayBackend 用于开发,SqliteBackend 用于大规模站点)实现高效查询,索引文件存储在 `storage/` 目录。缓存机制包含两 tier:内容索引缓存和可配置的整页缓存(`core/Http/WebpageCache`),支持静态速度交付。路由系统(`core/Routing/Router`)支持基于内容结构的智能路由和自定义模式。安全方面,设计强制 Web 根指向 `public/`,并通过 Nginx 配置示例阻断对敏感目录的访问;框架自身包含 HTTPS 强制和主题资产安全检查。开发体验上,CLI 提供 benchmark、stress、test 等命令;内置测试套件位于 `core/tests/`;项目遵循 PSR-4 自动加载,代码结构清晰。值得注意的是,系统对 LLM 友好,清晰的文件和 CLI 使其能与 AI 工具协同开发。