2012-10-19 108 views
14

我在我們的一個遺留項目中使用SF2,而不是整個框架,但通過拉入需要的捆綁包和組件。我總是想知道這些代碼:Symfony2 bootstrap.php.cache文件的用途是什麼?

$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全框架)。我之前沒有使用它,並沒有問題,但我想知道這是否會給我一些性能提升等,我應該看看。我試圖找到所有的東西,但找不到專門用於此主題的文檔。

回答

13

爲確保最佳的靈活性和代碼重用,Symfony2應用程序利用各種類和第三方組件。但是,從每個請求的單獨文件中加載所有這些類可能會導致一些開銷。爲了減少這種開銷,Symfony2標準版提供了一個腳本來生成所謂的引導文件,它由多個類定義組成一個文件。通過包含這個文件(其中包含許多核心類的副本),Symfony不再需要包含任何包含這些類的源文件。這將相當多地減少磁盤IO。

來源:Use Bootstrap Files

+0

感謝你們倆^ _^ – mr1031011

+0

所以我檢查了bootstrap文件,它看起來像只從'Symfony \ Component'包中的類「bootsraps」。 (http://pastebin.com/0ppmv2ke)。有沒有辦法「預加載」我的項目的所有類以獲得boosttring性能?或者這是不需要的? –

11

Symfony documentation

爲了確保最佳的靈活性和代碼重用,Symfony2的應用利用各種課程和第三方組件。但是,從每個請求的單獨文件中加載所有這些類可能會導致一些開銷。爲了減少這種開銷,Symfony2標準版提供了一個腳本來生成所謂的引導文件,它由多個類定義組成一個文件。通過包含這個文件(其中包含許多核心類的副本),Symfony不再需要包含任何包含這些類的源文件。這將相當多地減少磁盤IO。

可以生成引導文件是這樣的:

php vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php 
+0

我是第一個。 :P –

+0

謝謝你,真的很有幫助。 – mr1031011

2

的引導緩存文件可以在開發過程中的刺激,因爲它改變堆棧跟蹤的行號。幸運的是it can be easily disabledweb/app_dev.php