Loading:

PHP 7 News & Updates v7.0 - 7.4 - book

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


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=4&t=5768

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
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-17 v.1.5 | design: diviXdesign & rainbowcolors