Architecture/Design - 在哪里存储应用程序配置?

Architecture/Design - Where to store app configuration?

我正在 Laravel 中构建网络应用程序。 我有很多应用程序配置选项,例如:

这些选项在整个应用程序中使用,并且应该在大部分时间可用。我正在考虑有一个 'config' 数据库 table 来存储和一个配置对象来访问数据......这会是一个好的解决方案吗?如果没有,我还应该怎么做?

这样的配置一般有两种可能:

哪一个更适合您的情况取决于:

  • 配置多久更改一次?

几乎从不,然后去找文件。 很多时候,然后去DB

  • 谁应该能够更改配置?

只有您的管理员具有 cli/ssh 访问权限,然后去获取文件。 一大群人,那就去DB

  • 每台服务器的配置是否变化?

如果是,那么也许您可以利用 Laravels 标准配置中的环境检测方法

  • 简单值(文件就够了)或复杂值 "models" (DB)

一般来说,我认为平面文件总是性能更高且更容易扩展。


在我当前的应用程序中,我同时使用了:

平面文件配置包含:用户可以上传的文件限制;默认缩略图大小;可用语言;一些第三方代币;邮件 return 个地址。

我估计这些东西只会偶尔更改一次,无论如何都需要我的(管理员)干预。

数据库中有包裹价格表;奖励条件和相关奖励。

网站所有者(我的客户)可以轻松更改自己的这些值,并且它们还包含结构化元数据。例如。如何颁发奖项,如何称呼和翻译等