我在我们的一个遗留项目中使用SF2,而不是整个框架,而是通过引入我需要的捆绑包和组件。我一直想知道这些代码行:
$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
我想知道这个bootstrap.php.cache文件的用途是什么,它是什么,如何生成(如果我没有使用SF2整个框架)。我之前没有使用它,并且没有任何问题,但我想知道这是否可以给我一些性能提升等我应该研究一下。我试图找到所有的,但无法找到专门讨论这个主题的文件。
答案 0 :(得分:15)
为确保最佳的灵活性和代码重用,Symfony2应用程序利用各种类和第三方组件。但是,在每个请求中从单独的文件加载所有这些类可能会导致一些开销。为了减少这种开销,Symfony2标准版提供了一个脚本来生成所谓的引导文件,该文件由单个文件中的多个类定义组成。通过包含此文件(包含许多核心类的副本),Symfony不再需要包含任何包含这些类的源文件。这将大大减少光盘IO。
答案 1 :(得分:11)
为确保最佳的灵活性和代码重用,Symfony2应用程序利用各种类和第三方组件。但是,在每个请求中从单独的文件加载所有这些类可能会导致一些开销。为了减少这种开销,Symfony2标准版提供了一个脚本来生成所谓的引导文件,该文件由单个文件中的多个类定义组成。通过包含此文件(包含许多核心类的副本),Symfony不再需要包含任何包含这些类的源文件。这将大大减少光盘IO。
您可以像这样生成引导程序文件:
php vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php
答案 2 :(得分:2)
引导缓存文件在开发过程中可能会受到刺激,因为它会更改堆栈跟踪中的行号。幸运的是web/app_dev.php
中的it can be easily disabled。