W.A*_*med 4 php symfony twig symfony-2.7
我在最近几个月遇到的问题是在我的本地环境中命令缓存:clear非常慢.很多时候需要一分多钟.我尝试了XAMPP和WAMP,但它没有帮助.我尝试通过删除不同的服务和捆绑来解决但情况仍然相同.
最后,我发现问题与我在Resources/Views文件夹中的Twig文件数量成正比.我甚至用标准命令创建了一个新的symfony项目
composer create-project symfony/framework-standard-edition test-performance-project"2.7.*"
并创建了一个简单的标准控制器和twig文件来检查我的假设.我在Resources/Views文件夹中添加的twig文件越多,cache:clear命令就越慢(或多或少成比例).有没有办法防止这种情况,因为在我们的项目中,我们的Resources文件夹中有大量的twig文件.
我在用
Windows 10 PHP 7.0.15 Symfony 2.7.23 Twig 1.31.0
任何帮助将受到高度赞赏:)
在我的cli环境中启用xdebug时遇到了类似的问题.Twig解析对模板文件进行了大量迭代,因此xdebug对twig缓存生成性能有很大影响.
尝试在php cli配置中注释掉这一行:
;zend_extension=xdebug.so
Run Code Online (Sandbox Code Playgroud)
我所做的事情是为了提高 Windows 10 的性能,同时保持 xdebug 开启。
启用操作缓存
禁用 xdebug.remote_autostart
添加了 x-debug 帮助程序扩展
提示:如果你有带有remote_autostart 1的xdebug扩展,你应该让你的IDE中的listener始终保持ON,即使你没有任何断点,否则一切都会运行得非常慢(参见案例6)。
使用小型 symfony 4.2 项目进行一些测试,在开发模式下,时间是从 Chrome 中获取的 DomContentLoaded:
我通常使用案例 1,当我需要调试时,我会切换到案例 2。案例 3、4、5、6 与那些可能不了解 IDE 侦听器和调试 cookie 含义的人相关。
我在启用 Windows Subsystem for Linux (WSL) 的情况下测试了同一项目,并得到了一些改进。没有缓存时的加载时间如下:
总体而言,WSL 改进了一切,将加载时间缩短了 50%。
PS:要使 WSL 正常工作,您必须禁用 Windows Defender 实时保护,否则一切都会比没有 WSL 慢 2 倍。也许有一些选项可以保持实时保护并排除 WSL,但目前我不知道。
小智 -3
一位 symfony 核心开发人员问我他总是这样做rm -fr var/cache/*,所以我总是在运行我的应用程序之前这样做。
另外在 config_dev.yml 中将模板缓存设置为 false
twig:
cache:false
Run Code Online (Sandbox Code Playgroud)