【问题标题】:Is modular approach in Drupal good for performance?Drupal 中的模块化方法对性能有好处吗?
【发布时间】:2012-01-24 07:47:13
【问题描述】:

假设我必须使用钩子在 Drupal 中通过自定义编码来创建功能 A、B 和 C。

我可以将其中三个放在 custom1.module 中,或者我可以为它们创建三个单独的模块,比如 custom1.module、custom2.module 和 custom3.module。

创建三个模块的好处:

  • 干净的代码
  • 易于搜索
  • 相互独立
  • 易于在多开发者项目中提交

缺点:

  • 每个模块条目都存储在数据库中并需要查询。

它在多大程度上损害了网站的性能?

创建单个大型自定义模块文件以减少数据库查询或将其分解为不同的较小模块更好吗?

对于小型网站,这个问题可能可以忽略不计,但对于大型性能导向型网站来说,这个问题可以忽略不计。

【问题讨论】:

    标签: performance drupal module


    【解决方案1】:

    我会根据我需要函数 A 、 B 和 C 的频率对其进行编码

    实际例子:

    我做了一个有两个需求的模块

    1) 根据用户偏好发送定期电子邮件。让我们调用这个函数 A 2)在模块中制作的自定义内容。让我们调用这个函数 B 3) 社会融合。让我们调用这个函数 C

    所以我所做的是因为函数 A 每周只被调用一次,所以我为它制作了一个单独的模块。

    至于函数 B 和 C,我将它们放在一起,因为它们总是会被一起调用。

    如果您遇到性能问题,请查看此链接。它是提高性能的好资源。

    http://www.vmirgorod.name/10/11/5/tuning-drupal-performance

    它列出了一个名为 boost 的不错的模块。我没用过,但我听说过它的好东西。

    干杯, 维沙尔

    【讨论】:

    • Boost 是一个很好的模块,但仅适用于匿名用户。我个人更喜欢 varnish 用于匿名缓存。 drupal.org/project/varnish
    【解决方案2】:

    每次页面加载都会加载 Drupal .module 文件。只需将函数分离到不同的 .module 文件中,几乎不会获得或损失与性能相关的东西。如果您不使用操作码缓存,则可以通过创建 .inc 文件并在 hook_menu 的菜单项中引用这些文件来提高性能,这样这些文件仅在访问菜单项时才被加载。然后不经常调用的函数不占用内存空间。

    与模块在缓存、内存使用和/或数据库访问和结构方面的设计方式相比,文件分离通常是一个非常小的性能问题。当您创建或不创建单独的模块时,让代码维护和依赖问题驱动。

    【讨论】:

      【解决方案3】:

      我其实很感兴趣:

      创建单个大型自定义模块文件以减少数据库查询或将其分解为不同的较小模块更好吗?

      我四处寻找,发现了一些关于对数据库进行基准测试的事情。也许这里的建议是启动开发版本并进行测试。查看db benchmarking

      现在我明白这并没有具体回答,但我不得不说它对每个环境都是独一无二的。我讨厌使用这种类型的答案,但我真的相信它是。取决于安装的模块、使用的版本、硬件和操作系统可调参数等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多