Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][CMS] Buforowanie wyjścia a wydajność
Forum PHP.pl > Forum > PHP
WebCM
W internecie na wielu stronach polecają używanie buforowania wyjścia. Może przyspieszyć ładowanie się stron. Niektórzy jednak twierdzą, że buforowanie wyjścia jest wolne. Fakt - zużywa więcej RAM-u - choć znacząco?

Jak jest w rzeczywistości?

Buforowanie wyjścia może się przydać do np. do tworzenia plików cache. Jednak głównym problemem są moduły w CMS-ie. Użycie OB pozwoliłoby potem na wstawienie treści wygenerowanej przez moduł do szablonu, umożliwiając również dostęp do sekcji <head>, <title>, cookies, itp. bez potrzeby dołączania dodatkowych plików.

Co jednak o tym myślicie?

Ważna jest optymalizacja, bowiem skrypt być szybki również na darmowych serwerach. smile.gif
konradk2
nie jestem przekonany czy buforowanie spowoduje znaczącą różnice, głównie dlatego że wszystkie, czy też znacząca większość informacji podczas wykonywania strony jest w pamięci. Z tego co wiem o php to czyszczenie pamięci w trakcie występuje tylko w przypadku obiektów jeśli się straci do nich dowiązanie a reszty zmiennych na polecenie programisty. W zależności od ustawień serwera dane i tak są buforowane przed wysłaniem do przeglądarki a w części przypadków są buforowane aż do wykonania całego skryptu.
Oczywiście wszystko można napisać tak aby usmażyć procesor
WebCM
Przeprowadziłem przed chwilą test programem ab.exe, ale na małej ilości danych (tylko informacja). Może później zrobię inny - z dużym artykułem i komentarzami. Użycie OB nieznacznie spowolniło skrypt (różnica 1-2 ms. w 1 wywołaniu). Przykładowo ilość zapytań na sekundę - bez OB: 17.28, z OB: 17.09 (były też bardziej rozbieżne wyniki, np. 15.51, 17.58). Zanim wstawię dane z bufora do layoutu, zapisuję je do zmiennej (bo wcześniej trzeba bufor wyłączyć - nagłówka layoutu ani nawigacji nie buforujemy). Może przy częstym wywoływaniu ECHO rezultat byłby całkiem inny.

Tak jak pisałem - chcę, aby moduły były w stanie zmienić zawartość tagu <title> i <head>. Trzeba więc dołączać je przed znacznikiem <html>. Jednak to, co wygenerują, musi znaleźć się w <body> w szablonie głównym (layoucie). Gdyby każdy moduł używał tylko 1 szablonu, nie byłoby problemu. Są sytuacje, że trzeba wyświetlić tylko komunikat. Niektóre moduły składają się z wielu części (np. PW) i dołączają 2 szablony (część stała, np. foldery + zmienna, np. lista wiadomości).

Buforowanie wyjścia rozwiązuje te problemy. Na ##php twierdzą, że jest wolne, gdyż używa dużo RAM-u. Rzeczywiście - maksymalne zużycie trochę (a może znacznie) wzrasta. Czy ktoś testował wydajność i pamięciożerność buforowania wyjścia i mógłby się podzielić wynikami? Co lepiej wybrać? Może abstrakcja wyglądu (system szablonów?) lub modułów (z potrzebą definiowania globalnych: $cfg, $lang, $user, $db...) nie okaże się wcale wydajniejsza?
devnul
buforować:tak
jak: z głową
do wszystkiego trzeba mieć umiar
jeśli utworzysz tysiąc buforół - to masz 100% że to będzi chodziło jak krew z nosa
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.