众所周知,在Web服务器启动后(包括ddev下),第一页(如安装页)或首页上的Drupal 8速度很慢。有什么办法可以加快速度吗?我认为问题是,所有成千上万的Drupal php文件必须在运行正常之前加载到opcache中。有办法吗?
答案 0 :(得分:2)
我正在为此尝试全新的Composer-Preload软件包。使用Drupal 8相当容易。维护者在改进它与Drupal的兼容性方面反应灵敏。
如自述文件所述:
composer require ayesh/composer-preload
(或ddev composer require ayesh/composer-preload
"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。它会遍历列出目录中的所有文件,以查看应预加载的内容。ddev ssh
)内执行ln -s /var/www/html/vendor/preload.php /var/www/html/web/preload.php
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;