Как я могу ускорить свои первые несколько страниц в проекте ddev Drupal 8? - PullRequest
0 голосов
/ 24 ноября 2018

Drupal 8 печально известен медленной работой на первой странице (например, на странице установки) или на первой странице после запуска веб-сервера (в том числе под ddev).Есть ли способ, которым я могу немного ускорить это?Я думаю проблема в том, что все эти тысячи php-файлов Drupal должны быть загружены в opcache, прежде чем он будет работать правильно.Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Наше решение заключается в использовании APCu, который я рекомендую и в производстве.Вот как мы настроили DDEV - также я рекомендую отключить Symfony APCClassLoader, поскольку он устарел и медленнее .

ddev / config.yaml

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

ваши настройки.php

// Don't use Symfony's APCLoader. Composer's APCu loader has better performance.
$settings['class_loader_auto_detect'] = FALSE;
0 голосов
/ 24 ноября 2018

Я экспериментирую с новым Composer-Preload пакетом для этого.Начать работу с Drupal 8 довольно просто. Сопровождающий очень быстро улучшил его совместимость с Drupal.

Как указано в README:

  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
        }
пробег composer preload (или ddev composer preload).Это создает vendor / preload.php, который выполняет фактическую предварительную загрузку.Он просматривает все файлы в перечисленных каталогах, чтобы увидеть, что должно быть предварительно загружено. Ссылка preload.php в ваш docroot (или другой каталог, доступный с веб-сервера).Например, если документ является "web", внутри веб-контейнера (ddev ssh) выполните ln -s /var/www/html/vendor/preload.php /var/www/html/web/preload.php Если для ddev, добавьте команду curl для запуска на ddev start в вашем .ddev / config.yaml:

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

Ваш пробег может отличаться, но мне показалось, что мой проект D8 был намного более быстрым, чтобы начать с этой настройкой.Спасибо @ayesh за отличный проект Composer-Preload, у него большое будущее.

...