2012-10-19 8 views
14

Używam SF2 w jednym z naszych starszych projektów, a nie w całej strukturze, ale wciągając potrzebne pakiety i komponenty. A ja zawsze zastanawiałem tych linii kodu:Jaki jest cel pliku 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(); 

Zastanawiam się, co to jest za plik bootstrap.php.cache, co to jest za, jak to jest generowane (jeśli nie używam cały SF2 struktura). Nie korzystałem z niego wcześniej i nie było problemu, ale zastanawiam się, czy to może dać mi jakieś zwiększenie wydajności itp., Na które powinienem się przyjrzeć. Próbowałem znaleźć wszystko, ale nie mogłem znaleźć dokumentu poświęconego temu tematowi.

Odpowiedz

13

Aby zapewnić optymalną elastyczność i ponowne wykorzystanie kodu, aplikacje Symfony2 wykorzystują różnorodne klasy i komponenty stron trzecich. Jednak ładowanie wszystkich tych klas z oddzielnych plików przy każdym żądaniu może spowodować pewne obciążenie. Aby zmniejszyć ten narzut, Symfony2 Standard Edition dostarcza skrypt do generowania tak zwanego pliku bootstrap, składającego się z wielu definicji klas w jednym pliku. Włączając ten plik (który zawiera kopię wielu klas podstawowych), Symfony nie musi już zawierać żadnego z plików źródłowych zawierających te klasy. To znacznie zmniejszy dysk IO.

Źródło: Use Bootstrap Files.

+0

dzięki wam obydwie^_^ – mr1031011

+0

Tak więc sprawdziłem plik bootstrap i wygląda na to, że to "bootsraps" tylko klasy z pakietu 'Symfony \ Component'. (http://pastebin.com/0ppmv2ke). Czy istnieje sposób, aby "wstępnie załadować" wszystkie klasy mojego projektu w celu zwiększenia wydajności? Czy to jest niepotrzebne? –

11

Z Symfony documentation:

Aby zapewnić optymalną elastyczność i ponowne wykorzystanie kodu, Symfony2 aplikacji dźwigni rozmaitych klas i 3 elementów zewnętrznych. Jednak ładowanie wszystkich tych klas z oddzielnych plików przy każdym żądaniu może spowodować pewne obciążenie. Aby zmniejszyć ten narzut, Symfony2 Standard Edition dostarcza skrypt do generowania tak zwanego pliku bootstrap, składającego się z wielu definicji klas w jednym pliku. Włączając ten plik (który zawiera kopię wielu klas podstawowych), Symfony nie musi już zawierać żadnego z plików źródłowych zawierających te klasy. To znacznie zmniejszy dysk IO.

Można wygenerować plik bootstrap tak:

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

Byłem pierwszy. : P –

+0

dziękuję za to, naprawdę pomocne. – mr1031011

2

ładowania początkowego plik cache może być podrażnienie podczas rozwoju ponieważ zmienia numery linii w ślady stosu. Na szczęście it can be easily disabled w web/app_dev.php.