Các tập lệnh PHP theo mặc định được diễn giải mỗi khi chúng được gọi bởi máy chủ http, vì vậy mọi cuộc gọi đều khởi tạo phân tích tập lệnh và có thể biên dịch bởi Công cụ Zend. Bạn có thể loại bỏ nút cổ chai này bằng cách sử dụng bộ đệm ẩn tập lệnh, như APC. Nó giữ tập lệnh PHP được biên dịch một lần trong bộ nhớ/trên đĩa và sử dụng nó cho tất cả các yêu cầu tiếp theo. Lãi suất thường rất quan trọng, đặc biệt là trong các ứng dụng PHP được tạo bằng các khung công tác phức tạp như ZF.
Mọi yêu cầu theo mặc định sẽ mở ra kết nối với cơ sở dữ liệu, vì vậy bạn nên sử dụng một số loại kết nối cơ sở dữ liệu hoặc kết nối liên tục (không luôn hoạt động, tùy thuộc vào cấu hình http máy chủ/php). Tôi chưa bao giờ thử, nhưng có thể có một cách để sử dụng memcache để giữ các kết nối cơ sở dữ liệu.
Bạn cũng có thể sử dụng memcache để lưu dữ liệu phiên, nếu chúng được sử dụng cho mọi yêu cầu. Sự kiên trì của họ không quan trọng và memcache giúp làm cho nó rất nhanh. "Vấn đề" là PHP hoạt động hơi khác so với các khung công tác khác, vì nó hoạt động theo cách SSI (phía máy chủ) - mọi yêu cầu được xử lý bởi máy chủ http và nếu yêu cầu chạy một kịch bản PHP, trình thông dịch của nó được khởi tạo và các kịch bản được nạp, phân tích cú pháp, biên dịch và chạy. Điều này có thể được so sánh khi vào trong xe, khởi động động cơ và đi trong 10 mét.
Cách khác, giả sử, một ứng dụng máy chủ, trong đó chính ứng dụng web đang xử lý các yêu cầu trong vòng lặp riêng của nó, luôn chia sẻ kết nối cơ sở dữ liệu và không khởi chạy quá trình chạy lặp đi lặp lại. Giải pháp này cho độ trễ thấp hơn nhiều. Điều này mặt khác có thể được so sánh với việc đang ở trong một chiếc xe đang chạy và sử dụng nó để lái xe cùng 10 mét. ;)
Giải pháp lưu bộ nhớ đệm/biên dịch trước và gộp chung ở trên là cách tốt nhất để giảm phí đầu vào của init.PHP/MySQL vẫn là một giải pháp dựa trên RDBMS, và có một lý do chính đáng tại sao BigTable là, tốt, chỉ là một phần lớn, phân tán, phân phối rộng rãi hashtable (một chút quá đơn giản, tôi biết) - đọc trên High Scalability.
không thể thực hiện với PHP và MySQL ... –
200ms = 0,2 giây btw. Bạn sẽ có thể làm * đó * trong php? – krosenvold
Thứ nhất, là thời điểm Google hiển thị thời gian thực tế để tạo trang (conect, truy vấn, echo ...) hoặc chỉ là thời gian để thực hiện truy vấn? Tôi tin rằng đó chỉ là truy vấn. Tôi có nhiều trang mất 0,05 giây để tải toàn bộ trang. –