体系结构/设计 - 存储应用配置的位置


Architecture/Design - Where to store app configuration?

我正在Laravel构建一个Web应用程序。我有许多应用程序配置选项,例如:

  • 付费计划的价格
  • 试用模式下的最长天数
  • 免费用户可以拥有的最大积分数
  • 默认电子邮件发件人地址

这些选项在整个应用程序中使用,并且应该在大多数情况下都可用。我正在考虑有一个"配置"数据库表来存储和一个配置对象来访问数据......这是一个很好的解决方案吗?如果没有,我应该怎么做?

这种配置通常有两种可能性:

  • 应用/配置 http://laravel.com/docs/4.2/configuration
  • 数据库中的配置表

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

  • 配置多久更改一次?

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

  • 谁应该能够更改配置?

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

  • 配置是否因服务器而异?

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

  • 简单的值(文件就足够了)或复杂的"模型"(DB)

一般来说,我估计平面文件总是性能更高且易于扩展。


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

平面文件配置包含:用户可以上传的文件限制;默认缩略图大小;可用语言;某些第三方令牌;邮件返回地址。

我估计这些事情只会偶尔改变一次,并且总是需要我的(管理员)干预。

数据库有套餐价格表;奖励条件和相关奖励。

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