如何加快ddev Drupal 8项目的前几页?

时间:2018-11-24 18:46:59

标签: drupal-8 ddev

众所周知,在Web服务器启动后(包括ddev下),第一页(如安装页)或首页上的Drupal 8速度很慢。有什么办法可以加快速度吗?我认为问题是,所有成千上万的Drupal php文件必须在运行正常之前加载到opcache中。有办法吗?

2 个答案:

答案 0 :(得分:2)

我正在为此尝试全新的Composer-Preload软件包。使用Drupal 8相当容易。维护者在改进它与Drupal的兼容性方面反应灵敏。

如自述文件所述:

  1. composer require ayesh/composer-preload(或ddev composer require ayesh/composer-preload
  2. 编辑composer.json以将所需部分添加到“额外”:

    "preload": {
        "paths": [
            "web"
        ],
            "exclude": [
               "web/core/tests",
           "web/core/lib/Drupal/Component/Assertion",
               "web/core/modules/simpletest",
               "web/core/modules/editor/src/Tests"
            ],
            "no-status-check": false
        }

  1. 运行composer preload(或ddev composer preload)。这将创建用于实际预加载的vendor / preload.php。它会遍历列出目录中的所有文件,以查看应预加载的内容。
  2. 将preload.php链接到您的docroot(或可从网络服务器访问的另一个目录)。例如,如果docroot是“ web”,则在Web容器(ddev ssh)内执行ln -s /var/www/html/vendor/preload.php /var/www/html/web/preload.php
  3. 如果是ddev,请在.ddev / config.yaml中的ddev start上添加curl命令:

hooks:
  post-start:
    - exec: curl -s localhost/preload.php

您的行驶里程可能会有所不同,但是在我看来,从此设置开始,我的D8项目更加敏捷。感谢@ayesh提供出色的Composer-Preload项目,它的发展前景十分广阔。

答案 1 :(得分:1)

我们的解决方案是使用APCu,我也建议在生产中使用。这是我们设置DDEV的方法-同样,我建议禁用Symfony APCClassLoader,因为它已弃用且速度较慢

ddev / config.yaml

hooks:
  post-start:
  - exec: sudo apt-get update
  - exec: sudo apt-get install -y php-apcu

您的settings.php

// Don't use Symfony's APCLoader. Composer's APCu loader has better performance.
$settings['class_loader_auto_detect'] = FALSE;