Loading:


    Optymalizacja w SMARTY - buforowanie (cache)

    Opis optymalizacji stron opartych na szablonach SMARTY, przedstawienie prostego systemu buforowania serwisu w celu znacznego przyspieszenia wydajności.

     

    Postaram się opisać prosty system cache w smarty, na początek po co nam buforowanie? Odpowiedź jest prosta zwiększenie szybkości działania serwisu i ogromne odciążenie serwera.

    Jeśli dopiero zaczynasz przygodę ze smartami i nie miałeś nigdy wcześniej do czynienia z cache ten przykład pozwoli ci zrozumieć zasadę działania.

    1. Jak włączyć cache w smarty


    <?php
    include('libs/Smarty.class.php');//tu tradycyjne pobranie biblioteki smarty
    $smarty=new Smarty;
    $smarty->caching=1;
    $smarty->display('strona.tpl');
    ?>

    Jak widzimy za włączenie cache w smarty odpowiada metoda caching która jest domyślnie wyłączona, po jej włączeniu raz wygenerowana strona będzie pobierana z katalogu cache a nie ponownie generowana od początku.

     

    2. Przykład strony aktualizującej sie co godzine, lub po zmianie pliku konfiguracyjnego


    <?php
    include('libs/Smarty.class.php');//tu tradycyjne pobranie biblioteki smarty
    $smarty=new Smarty;
    $smarty->caching=1;
    $smarty->compile_check = true;//sprawdza czy plik szablonu lub konfiguracja uległy zmienie
    $smarty->cache_lifetime=3600;//czas życia pliku w cache 1 godzina
    $smarty->display('strona.tpl');
    ?>

     

    3. Buforowanie tylko wybranej części szablonu


    To jedno z częściej stosowanych typów buforu smarty, pozwala ono na buforowanie w określony sposób wybranych części szablonu.

     

    <?php
    include ("libs/Smarty.class.php");
    $smarty = new Smarty();
    $smarty->caching = 1;
    $smarty->use_sub_dirs = TRUE;//ten parametr rozbija pliki cache na podkatalogi dzięki czemu odczyt jest szybszy niz gdyby wszystkie pliki były w jednym katalogu

    if(!$smarty->is_cached('naglowek.tpl','naglowek')){
     //tutaj sprawdzamy czy nagluwek jest juz w cache jeśli nie musimy wygenerować kod poprzez php
    jakasFunkcjaGenerujacaNaglowek();
    }
    $smarty->display("naglowek.tpl",'naglowek');

    //Naglowek jak wiadomo nie zmienia sie na stronie ale juz np panel użytkownika tak, wiec aby móc go zapisac w cache musimy podac parametr po którym smarty rozpozna kto powinien otrzymać danyc plik z pamięci podręcznej cache oto jak to zrobić

    $user = 'igor'; // to jest nasz indentyfikator uzytkownika ustawiam go przykładowo na igor

    //teraz sprawdzamy czy jest plik dla tekiego użytkownika w cache jeśli nie musimy wykonać funkcje generującą jego menu aby móc poźniej odczytywac juz z cache

    if(!$smarty->is_cached('menu','menu|'.$user)){
    jakasFunkcjaDoGenerowaniaMenu();
    }
    $smarty->display("menu",'menu|'.$user);
    ?>


    4. Usuwanie plików z buforu dla konkretnego usera oraz czyszczenie całkowite.


    <?php
    $smarty->clear_cache(null,'menu');//całkowite czyszczenie bufora dla modułu menu

    $smarty->clear_cache(null,'menu|'.$user);//czyszczenie tylko bufora modułu menu dla uzytkownika $user
    ?>


    Napisz Artyku³

    Listing

    niema




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors