2012-10-19 38 views
14

Tôi đang sử dụng SF2 trong một trong các dự án kế thừa của chúng tôi, không phải toàn bộ khuôn khổ mà bằng cách kéo các gói và thành phần tôi cần. Và tôi luôn tự hỏi về những dòng mã:Mục đích của tệp tin bootstrap.php.cache của Symfony2 là gì?

$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(); 

Tôi tự hỏi những gì tập tin bootstrap.php.cache này là dành cho, nó là để làm gì, làm thế nào nó được tạo ra (nếu tôi không sử dụng toàn bộ SF2 khuôn khổ). Tôi đã không sử dụng nó trước đây, và không có vấn đề, nhưng tôi tự hỏi nếu điều này có thể cho tôi một số hiệu suất tăng vv mà tôi nên xem xét. Tôi đã cố gắng tìm kiếm tất cả các xung quanh nhưng không thể tìm thấy một tài liệu dành riêng cho chủ đề này.

Trả lời

13

Để đảm bảo tính linh hoạt tối ưu và sử dụng lại mã, các ứng dụng Symfony2 tận dụng nhiều lớp và thành phần của bên thứ 3. Nhưng việc tải tất cả các lớp này từ các tệp riêng biệt trên mỗi yêu cầu có thể dẫn đến một số chi phí. Để giảm chi phí này, Symfony2 Standard Edition cung cấp một kịch bản để tạo ra một tệp bootstrap được gọi là, bao gồm các định nghĩa nhiều lớp trong một tệp duy nhất. Bằng cách bao gồm tệp này (có chứa một bản sao của nhiều lớp cốt lõi), Symfony không còn cần bao gồm bất kỳ tệp nguồn nào chứa các lớp đó nữa. Điều này sẽ làm giảm IO đĩa khá một chút.

Nguồn: Use Bootstrap Files.

+0

nhờ cả hai bạn^_^ – mr1031011

+0

Vì vậy, tôi đã kiểm tra tệp bootstrap và có vẻ như nó chỉ là các lớp khởi động từ gói 'Symfony \ Component'. (http://pastebin.com/0ppmv2ke). Có cách nào để "preload" tất cả các lớp học của dự án của tôi cho hiệu suất boostring? Hoặc nó là không cần thiết? –

11

Từ Symfony documentation:

Để đảm bảo tính linh hoạt tối ưu và tái sử dụng mã, ứng dụng Symfony2 đòn bẩy một loạt các lớp học và các thành phần bên thứ 3. Nhưng việc tải tất cả các lớp này từ các tệp riêng biệt trên mỗi yêu cầu có thể dẫn đến một số chi phí. Để giảm chi phí này, Symfony2 Standard Edition cung cấp một kịch bản để tạo ra một tệp bootstrap được gọi là, bao gồm các định nghĩa nhiều lớp trong một tệp duy nhất. Bằng cách bao gồm tệp này (có chứa một bản sao của nhiều lớp cốt lõi), Symfony không còn cần bao gồm bất kỳ tệp nguồn nào chứa các lớp đó nữa. Điều này sẽ làm giảm IO đĩa khá một chút.

Bạn có thể tạo tập tin bootstrap của bạn như thế này:

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

Tôi là người đầu tiên. : P –

+0

cảm ơn bạn vì điều này, thực sự hữu ích. – mr1031011

2

Các tập tin bộ nhớ cache bootstrap có thể là một kích thích quá trình phát triển vì nó thay đổi số dòng trong ngăn xếp dấu vết. May mắn thay it can be easily disabled trong web/app_dev.php.

Các vấn đề liên quan