![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
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. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 21:18 |