Bạn nói điều này:
Tôi muốn sử dụng ob_start
("ob_gzhandler");
để nén CSS file
Tôi thà phục vụ và nén JS/CSS (tốt, tĩnh) file là công việc của máy chủ Web (tức là Apache), chứ không phải PHP.
Về điều đó, bạn có thể có một cái nhìn tại mod_deflate
- ít nhất, nếu bạn đang sử dụng Apache 2.
tất cả các tập tin trên trang web của tôi có được nạp (bao gồm) thông qua các tập tin index
Điều đó có thực sự cần thiết không? Bạn đang làm việc với PHP không có lý do rõ ràng (?), Theo cách đó.
(Lưu ý rằng ngay cả khi tệp CSS/JS được phân phối qua PHP, Apache sẽ có thể nén chúng với mod_deflate
; tương tự cũng đúng đối với HTML, JSON, ...btw)
Một ưu điểm khác của việc không đi qua PHP để máy chủ các tập tin là nó sẽ dễ dàng hơn để có được họ phục vụ bởi máy chủ khác, như trang web của bạn sẽ phát triển (nếu nó phát triển đủ, trên thực tế):
- bạn có thể có một loạt các "máy chủ PHP", để xử lý các trang PHP
- và một hoặc hai "máy chủ tệp tĩnh", chỉ với CSS/JS/hình ảnh của máy chủ và làm nhẹ tải hoặc "máy chủ ứng dụng" của bạn ; không cần PHP cho những cái này; bạn cũng có thể sử dụng giống như lighttpd thay vì Apache
Điều đó đang được nói, ob_start
nói điều này:
bộ đệm đầu ra là stackable, có nghĩa là, bạn có thể gọi ob_start() trong khi người khác ob_start() đang hoạt động. Chỉ cần đảm bảo mà bạn gọi ob_end_flush() số thích hợp. Nếu nhiều chức năng gọi lại đầu ra là hoạt động, đầu ra đang được lọc tuần tự qua từng lệnh trong số thứ tự lồng nhau.
Vì vậy, tôi nghĩ rằng câu trả lời cho câu hỏi của bạn là "có" :-)
Nguồn
2009-07-29 04:38:16
Cảm ơn và như tôi đã đề cập đến nó đã được gọi là trong kịch bản của tôi, tôi cần phải theo dõi và xem nếu ob_end_flush() thậm chí còn được gọi là, nếu nó không phải là điều này sẽ gây ra? – JasonDavis
Ai biết được, có thể đã thử nó. –
Bộ đệm đầu ra được xóa sạch ở cuối thực thi tập lệnh nếu bạn không tự làm với 'ob_flush()' hoặc 'ob_end_flush()'. Tuy nhiên, nếu bạn có nhiều bộ đệm lồng nhau và bạn mong muốn xử lý nội dung của chúng theo một thứ tự cụ thể, thì bạn có thể thấy đầu ra lạ. – zombat