Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cachowanie - jak to wykonac?!
Forum PHP.pl > Forum > PHP
ApC
wiec tak, mam strone i podczas kazdego odswiezenia wykonywane sa dziesiatki zapytan, slyszalem, ze mozna wszystko jakos cachowac i bedzie znacznie szybcije, jak to zrobic?
phpion
Cytat(ApC @ 18.02.2008, 00:05:19 ) *
wykonywane sa dziesiatki zapytan

Może zacznij od optymalizacji zapytań? "Dziesiątki zapytań" to stanowczo za dużo...
MajareQ
Od samego początku budowania skryptów - uproszczaj je. tak jak to powiedział phpion, to będzie początek...
Moli
Jak już poprzednicy wspomnieli, popraw kod. A co do samego cache, to zobacz ten artykuł.
windman
nie przesadzajmy!! 20 to już dziesiątki, a osobiście uważam, że 20 to nie dużo.

Załóżmy że koleś ma pokolei - autoryzacja, szablon, dynamiczne meta, jakieś 8 bloków z treścią wyciągniętą z bazy, blok z newsami, blok z pozostałymi newsami, blok z komentarzami, może jeszcze sondę i może jeszcze coś.

Nie powiecie mi, że tak rozbudowaną stronę można obsłużyć 5 zapytaniami, zakładając zdrowy rozsądek kolesia który pisał bazę.

Pytanie moim zdaniem na miejscu, nie można zakładać że np 20 zapytań to za dużo i człowiek źle napisał system, wszystko zależy co wyświetla.

Pozdrawiam
phpion
Cytat(windman @ 18.02.2008, 00:57:35 ) *
Załóżmy że koleś ma pokolei - autoryzacja, szablon, dynamiczne meta, jakieś 8 bloków z treścią wyciągniętą z bazy, blok z newsami, blok z pozostałymi newsami, blok z komentarzami, może jeszcze sondę i może jeszcze coś.

No więc po kolei:
- autoryzacja - raczej jest wykonywana bez wyświetlania czegokolwiek i zwracany jest rezultat (udało się, nie udało się). Więc to 1 zapytanie wykonywane samodzielnie "w tle".
- szablon - po kiego trzymać szablony w bazie?
- meta - j.w.
- 8 bloków z treścią - ok, jest to 1 zapytanie
- blok z newsami - ok, zapytanie nr 2
- blok z pozostałymi newsami - a to? Bez przesady, można dopisać "blok z jeszcze innymi newsami" winksmiley.jpg
- blok z komentarzami - można pobrać wraz z newsami (poza tym kto na stronie głównej wyświetla newsy wraz z komentarzami?)
- sonda - ok, zapytanie nr 3
- jeszcze coś - niech tego będą 2 sztuki - zapytanie 4 i 5.

Łącznie daje to 5 zapytań, a nie 20! Ja bym nadal obstawiał optymalizację zapytań.
windman
Cytat(phpion @ 18.02.2008, 09:14:43 ) *
No więc po kolei:
- autoryzacja - raczej jest wykonywana bez wyświetlania czegokolwiek i zwracany jest rezultat (udało się, nie udało się). Więc to 1 zapytanie wykonywane samodzielnie "w tle".

W tle czy nie w tle ale się liczy!

Cytat(phpion @ 18.02.2008, 09:14:43 ) *
- szablon - po kiego trzymać szablony w bazie?

Samego szablonu nie trzyma się w bazie, ale każda strona może mieć inny, a to już gdzieś trzeba trzymać!!

Cytat(phpion @ 18.02.2008, 09:14:43 ) *
- meta - j.w.

Mam na muśli dynamiczne meta, ale tutaj się zgodzę, że można to pobrać wraz z newsem

Cytat(phpion @ 18.02.2008, 09:14:43 ) *
- 8 bloków z treścią - ok, jest to 1 zapytanie

W jaki sposób ? proszę o przykład.
- blok z newsami - ok, zapytanie nr 2

Cytat(phpion @ 18.02.2008, 09:14:43 ) *
- blok z komentarzami - można pobrać wraz z newsami (poza tym kto na stronie głównej wyświetla newsy wraz z komentarzami?)

Można zbudować zapytanie, które pobierze wszystko za jednym zamachem, tylko tutaj chodzi o elastyczność aplikacji. Dajmy na to, że koleś ma cms`a, któr użytkownikowi daje możliwość wstawiania tego co chce tam gdzie chce w ilości jaką chce itp.
Nie wiemy z góry co z czym jednocześnie może być wyciągnięte.

Poza tym kto mówił, że to strona główna? Nawet jeśli to może ma życzenie do ostatniego newsa wyświetlić 3 ostatnie komentarze? wystarczy trochę wyobraźni.

- sonda - ok, zapytanie nr 3
- jeszcze coś - niech tego będą 2 sztuki - zapytanie 4 i 5.

pozdrawiam
Moli
@windman - phpion ma rację, tak się nie da smile.gif Znaczy da, ale wtedy nawet cache nie pomoże smile.gif
windman
no dobra, to w takim razie jak myślicie, ile zapytań do bazy nastąpiło po wywołaniu tego adresu: http://www.mambopl.com/
nospor
1) Ostatnio na forum
2) Najnowsze pliki
3) news
4) menu


znaki zapytania (nie jestem pewien czy to w bazie powinno byc):
5) helion poleca
6) ciekawe ksiazki
7) polecamy
8) Uwaga promocja
9) polecamy ehost.pl
10) nasi partnerzy

11) ewenetualnie zapis kto jest online

czyli 4-5 pewniakow, +6 pod znakiem zapytania smile.gif

edit: mala pomylka. Na news dwa zapytania. jedno na newsy, drugie na ilosc newsow
windman
ok, załóżmy że 11 (dla mnie wygodniej ;-)

czyli zbliżąmy się do magicznej liczby 20, a musicie przyznać, że strona nie jest nadmiernie rozbudowana.

Ale teraz do sedna ... "o co temu windmanowi chodzi" ...

Koleś napisał, że ma dziesiątki zapytań, a koledzy z forum od razu na hura "optymalizować".
Moim zdaniem wypadało najpierw zapyatać co to za strona, co wyświetla ile tego itp...

Jeden koleś powiedział, że jego wózek pali 25 na 100, inni... ty głupi jesteś - za dużo.
Nikt nie zapytał - a czym jeździsz...
koleś ma humvee i dla połowy wsi świadczy usługi typu pola oranie,
jego humvee robi to 2 razy szybciej i o połowę taniej niż ursus...

Przepraszam za ten przykład, ale to najlepiej oddaje o co mi chodzi.

Nie można z góry zakładać, że coś jest źle zrobione jeśłi nie wiemy co to jest.

Koniec.
nospor
Cytat
ok, załóżmy że 11 (dla mnie wygodniej ;-)
A dla mnie wygodniej 5 i co? No tak nie mozna winksmiley.jpg

Co nie zmienia faktu ze cache na strone lepiej zeby byl. Jak go wykonac? Skorzystac z jednej z klas, ktorych jest masa w necie. Albo napisac wlasny na swoje potrzeby (polecam tę pierwszą wersje).

A w przypadku gdy tych zapytan jest naprawde za duzo, to najpierw to zoptymalizowac a potem napisac cache. Ot i chyba wszystko w temacie.
Moli
@windman - No i co że strona ma 11 zapytań ? Musiałem czekać 16 sekund żeby w pełni strona się załadowała. Gdyby nie to że chciałem zobaczyć ile będzie sie wczytywać, to po max. 5 sekundach bym zrezygnował z dalszego czekania. Naprawdę chcesz żeby większość użytkownik opuszczało Twoją stronę przez to że zamiast 5 zapytań zrobiłeś 11 ?
windman
Cytat(Moli @ 18.02.2008, 12:25:38 ) *
@windman - No i co że strona ma 11 zapytań ? Musiałem czekać 16 sekund żeby w pełni strona się załadowała.

Piszesz o mambopl.com? jeśłi tak to zmień modem 33600 to już przeżytek!

Cytat(Moli @ 18.02.2008, 12:25:38 ) *
Naprawdę chcesz żeby większość użytkownik opuszczało Twoją stronę przez to że zamiast 5 zapytań zrobiłeś 11 ?


Tak się namęczyłem aby wymyślić fajny przykład z tym ursusem ale jak widac nic to nie dało?

Po raz ostatni (nie mam już sił)...
uważasz, że 11 zapytań to za dużo? A skąd wiesz co wyświetlam?!

Dla jednej aplikacji 2 zapytania to za dużo, inna wymaga 40!

Trzeba było kolesiowi podać link do artukułu z cachem i zwrócić uwagę aby spróbował zoptymalizować kod, nigdy nie wiesz jaki kombajn zmajstrował.
nrm
20 pytań przy sporym serwisie (choćby społecznościowym: dużo informacji) to nie jest dużo. Same sesje i auth (przynależności grupowe, dostępy) to z 5-6 na start winksmiley.jpg Ale co innego optymalne minimum profesjonalisty, a co innego ogrom pytań bez sensu i to jeszcze w pętlach winksmiley.jpg
windman
Cytat(normanos @ 18.02.2008, 13:32:06 ) *
20 pytań przy sporym serwisie (choćby społecznościowym: dużo informacji) to nie jest dużo. Same sesje i auth (przynależności grupowe, dostępy) to z 5-6 na start winksmiley.jpg Ale co innego optymalne minimum profesjonalisty, a co innego ogrom pytań bez sensu i to jeszcze w pętlach winksmiley.jpg


Zgadzam się w 100%!
Wszystko zależy od tego jaki serwis budujemy!
MajareQ
Odchodzimy od tematu, panowie...
ApC
Wiec mam np tak:

$cos=mysql_fetch_assoc(mysql_query("SELECT * FROM `cos`"));
I pobieram np.:

echo "$cos[stan] , lalala: $cos[ile_ludzi] reg: $cos[zapisanych] z miasta tego: $cos[miasto_to]";

Takich "$cos[cos]"; mam okolo 100 przy jednym odswiezeniu...

A takich al'a:
$cos=mysql_fetch_assoc(mysql_query("SELECT * FROM `cos`"));
okolo 5-15 na cale odswiezenie....

Co sadzicie?
windman
Cytat(ApC @ 18.02.2008, 15:44:31 ) *
A takich al'a:
$cos=mysql_fetch_assoc(mysql_query("SELECT * FROM `cos`"));
okolo 5-15 na cale odswiezenie....


To nie wystarczy aby odpowiedzieć na Twoje pytanie.
Aby stwierdzić, czy któreś zapytanie jest potrzbne czy też nie trzeba zobaczyć cały kod.
Z drugiej strony analiza dłuższego kodu, a w zasadzie całego systemu jaki zbudowałeś to już zupełnie inna baja na niejeden wieczór.
Ale jak masz coś krótkiego ;-) to można spróbować.

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.