wojto
3.03.2004, 22:16:53
Mam pytanie odnosnie cachowania.
Jak zrobic takie cachowanie? Wiadomo, ze jesli jest jakas strona "statyczna" (tylko czasami zmieniajaca swoja zawartosc), to sprawdzana jest data ostatniej modyfikacji pliku i porownywana z jakas zapisana w innym miejscu, lub jesli jest starsza niz okreslona ilosc czasu. Jesli tak, to usuwany jest plik i tworzony na jego miejsce nowy plik.
Natomiast jak to jest ze stronami dynamicznymi?
Widzialem w kilku skryptach, ze strony sa cachowane i jak data ich utworzenia jest starsza niz np. 3 minuty, to jet plik od nowa cachowany, ale co jesli ktos wczesniej zmieni zawartosc strony, np. doda jakiegos newsa, wtedy skrypt innym uzytkownikom pokaze to co jest zcachowane, czyli w to jeszcze bez newsa.
Nie wiem jak to jest w smarty zrobione, ale pewnie dobrze to dziala.
Moj pomysl to taki, zeby w klasie miec kazdy element strony oddzielnie, np. menu, tabelke z ost. postami z forum, tabelke ze spisem newsow, tabelke z komentarzami i to wszystko w oddzielnych niby modulach. I teraz jak ktos wczytuje strone, to klasa sprawdza, czy zcachowane pliki wszystkich potrzebnych modulow istnieja, jesli jakis nie istnieje, to go cachuje i tworzy. Zas jak ktos cos zmienia w bazie danych lub skrypcie, to wtedy usuwane sa dane zcachowane pliki wybranych elementow.
np. jak ktos doda newsa, to usuwany jest plik zcachowany z newsami
jak ktos doda komentarz do newsa, to usuwany jest cache z komentarzami i z newsem (bo w nim byla wyswietlana ilosc komentarzy). itp.
mam nadzieje, ze zrozumiale to opisalem, prosil bym o wszelka pomoc odnosnie cachowania, gdyz jest mi to potrzebne do pracy magisterskiej, z gory thx
ps. jesli temat nie na Pro, to niech ktos przeniesie
rzseattle
3.03.2004, 22:39:34
W smarty "przyspieszanie" opiera sie na dwoch etapach.
1. Kompilacja szablonu do kodu php.
Przyspiesza to znacznie szybkosc generowania strony poniewaz eleminuje mase pregow. Skompilowany szablon jednak dalej za kazdym razem pobiera dane ze zrodel zewnetrznych.
2. Wlasciwe cache'owanie
Jest tworzony plik ktory niejest wogole obrabiany POZA zdefiniowanymi wczesniej blokami dynamicznymi ktore sa odswiezane za kazdym razem. Jest to np funkcja rotatora banerow itp. Samo smarty nie sprawdza jednak czy dane zewnetrzne zmienily sie czy nie poniewaz jaki bylby wtedy sens cachowania skoro porownanie danych zajmuje mase czasu. Natomiast jest wprowadzony czas zywotnosci zcachowanego pliko ktory okresla co jaki czas plik ma byc odswiezany.
squid
3.03.2004, 22:53:37
pod tym adresem znajdziesz cos o tym
http://www.zend.com/zend/art/scriptcaching.php
wg mnie najlepszym rozwiazaniemodnoscie podjecia decyzji kiedy cachowac dane jest tworzenie przy kazdej zmianie danych nowego plku badz modyfikowaniu starego po kliknieciu na link uzytkownik jest przenoszony do skryptu php ktory sprawdza jesli plik kontrolny jest mlodszy niz statyczny wczesniej stowrzony plik wtedy nastepuje amicznie generowanie tresci jesli nie to uzytkownik jest przenoszony do wczesniej stworzonej strony statycznej
wada jest ze trzeba sprawdzac daty utowrzenia plikow ale jest to niewielki narzut czasowy.
Wiem ze to troche nie jaste jak nie rozumiecie to pisac
orson
4.03.2004, 08:12:17
witam ...
na reaktywowanym niedawno portaly webcity pojawil sie art na temat chache przy polaczeniach z baza danych ... warto przeczytac ...
cya
wojto
5.03.2004, 13:56:47
Cytat
witam ...
na reaktywowanym niedawno portaly webcity pojawil sie art na temat chache przy polaczeniach z baza danych ... warto przeczytac ...
cya
o_O dzieki za linka
przeczytalem i jest tam dokladnie to o co mi chodzilo, czyli cachowanie stron poprzez cachowanie jej elementow, a przy zmianie zawartosci bazy danych usuwany jest plik ze zcachowanym elementem tej strony; elementem ktory pobieral dane zmienione w tym zapytaniu.
chyba zrobie tak jak tam jest, czyli dolocze to cachowanie do klasy obslugujacej zapytania do bazy
@squid: ty mowisz o cachowaniu calych stron, czyli kazda zmiena zawartosci bazy danych musiala by usuwac zcachowany pllik, gdyz nie byl by on juz aktualny, co bylo by nie optymalne.
tak jak mowisz mozna cachowac strony zadko zmieniajace swoja zawartosc i potem sprawdzac, np. przez [manual:2686de4ea2]filectime[/manual:2686de4ea2]
dzieki za adres, choc juz go wczesniej widzialem
pozdro.