![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pisząc frameworka, zacząłem się zastanawiać, nad rozwiązaniem cache. Czy lepszym sposobem będzie cachowanie wyników z bazy(cache w klasie SQL) czy sposób z CodeIgniter, cachowanie całej metody (ob_get_content()).
Który sposób będzie lepszy/szybszy ? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Osobiście preferuje cachowanie poszczególnych elementów lub całych stron. Zyskujemy tutaj jeszcze na czasie, ponieważ nie musimy generować strony, od razu wysyłamy plik z gotową stroną.
-------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Osobiście preferuje cachowanie poszczególnych elementów lub całych stron. Zyskujemy tutaj jeszcze na czasie, ponieważ nie musimy generować strony, od razu wysyłamy plik z gotową stroną. O ile da sie taki fragment z cache'owac -- bo np jak mamy w nim dane uzaleznione od usera go przegladajacego to tak latwo nie bedzie (ew. mozna dla kazdego usera cache tworzyc) -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 2.09.2007 Skąd: Sheffield, UK Ostrzeżenie: (0%) ![]() ![]() |
Osobiście preferuje cachowanie poszczególnych elementów lub całych stron. Zyskujemy tutaj jeszcze na czasie, ponieważ nie musimy generować strony, od razu wysyłamy plik z gotową stroną. IMO cachowanie powinno być trasparentne i niskopoziomowe. Gównym elementem wpływającym na czas generowania strony i obciążenie serwera są zapytania SQL, ewentualnie żądania SOAP. Ja preferuję cachowanie wyników zapytań via memcache. Dodatkowo przydatne może być uaktywnienie natywnego cache (qcache) w mysql. Trzeba jedynie robić to z głową, bo nie każde zapytanie powinni być cachowane. Cachowanie całych stron nie jest efektywne - cachowana strona zabiera o wiele więcej miejsca w cache niż wynik zapytania, zatem przetworzenie jej (zczytanie, deserializacja) może okazać sie o wiele bardziej czaso/zasobożerne. Pozatym to żródło potencjalnych kłopotów. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat Cachowanie całych stron nie jest efektywne - cachowana strona zabiera o wiele więcej miejsca w cache niż wynik zapytania, zatem przetworzenie jej (zczytanie, deserializacja) może okazać sie o wiele bardziej czaso/zasobożerne. Pozatym to żródło potencjalnych kłopotów. No i powiesz mi ze serwowanie dynamicznej tresci jest szybsze niz samego pliku z HTMLem? Poza tym moze (tzn jest to OK) zajmowac wiecej miejsca, bo chodzi nam o oszczedzenie mocy CPU (minimalizacja czasu uzyskania strony) kosztem zajmowania miejsca. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
ja preferuje cache samego sqla, tym bardziej, że z danego cache korzystam w n-tu miejscach serwisu, cache strony nie ma dla mnie najmniejszego sensu (w moich przypadkach, bo czasem zdarza się skeszować całe strony).
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 2.09.2007 Skąd: Sheffield, UK Ostrzeżenie: (0%) ![]() ![]() |
No i powiesz mi ze serwowanie dynamicznej tresci jest szybsze niz samego pliku z HTMLem? Nie zrozumieliśmy się chyba, ja mówię o cachowaniu z uzyciem memcache. Operacja odczytu sporej ilości danych zajmie tyle samo czasu co przeparsowanie tego via PHP. Cachowanie stron jako gotowe HTMLe jest oczywiście wydajniejsze - ale realizowalne w bardzo znikomej ilośc projektów, spróbuj cachować stronę forum np, gdzie kazdemu użytkownikowi musisz wygenerować inny zestaw znacznikników nowych postów, etc. Poza tym moze (tzn jest to OK) zajmowac wiecej miejsca, bo chodzi nam o oszczedzenie mocy CPU (minimalizacja czasu uzyskania strony) kosztem zajmowania miejsca. Po prawdzie to przypuszczam iż serwowania htmla będzie co najwyżej 30% szybsze niż zaserwowanie pliku PHP robiącego wyłacznie echo. Jak napisałem - najwiekszym problemem są zapytania SQL - one zajmują (via serwer MySQL) najwięcej czasu jak i mocy procesora. Parsowanie nawet bardzo skomplikowanego kodu nie jest aż tak zasobożerne. Tak więc cachowanie samych zapytań jest wystarczającą metodą optymalizacji dla stron których nie można cachować w całości. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:19 |