kajzur
20.07.2009, 22:05:09
Do cache użyj np JPCache..
Co cache'ować? Wyniki z baz danych.. No ogólnie wsyzstko co może nadwyrężyć serwer.. Ile? Ile się da

Cache'ujesz te dane które się rzadko zmieniają ;p
MaestroS
20.07.2009, 22:17:43
A nie można pewnych informacji, które się "rzadko zmieniają" trzymać w sesjach? Czy pomyliłem idee funkcjonalności?
erix
20.07.2009, 22:45:35
Ok, a sesję komuś udostępniasz?
MaestroS
20.07.2009, 22:54:54
Nie bardzo rozumiem ...
Skoro cache ma służyć do przyśpieszania strony i zapobiegać ładowania danych - które zmieniają się relatywnie rzadko - co odświeżenie strony, to nie lepiej, żeby te dane były przechowywane w sesjach? Czy te scache'owane dane mają być dostępne nie tylko dla jednego, ale dla większej ilości użytkowników?
Pierwszy raz spotykam się z cache przy stronach, dlatego nurtuje mnie kilka rzeczy. Mam nadzieję, że nie macie mi tego za złe ( ;
erix
20.07.2009, 23:01:58
Cytat
Czy te scache'owane dane mają być dostępne nie tylko dla jednego, ale dla większej ilości użytkowników?
Gdyby dla jednego, nie miałoby to sensu.
Cache'uje się całe strony tylko wtedy, gdy we wszystkich przypadkach rezultat będzie ten sam.
lukada
20.07.2009, 23:10:24
A co gdyby przy pierwszym wejściu pobierać dane z z bazy danych i przechowywać je w sesjach?
MaestroS
20.07.2009, 23:10:41
Nie wiem - albo nie jestem w formie, albo jaki inny szkopuł, ale nie potrafię tego zrozumieć ... mająć 10,000 użytkowników jakie strony można cache'ować? Wszystko dzieje się wtedy bardzo dynamicznie, tj. utrzymując, że 10,000 osób coś aktualnie robi ... rezultat zawsze będzie inny ... chyba, że wchodzi w grę nadpisywanie zacache'owanych plików, ale to z kolei następne sprawdzanie starych, nadpisywanie ich i tak w kółko ... to naprawdę jest takie wydajne?
lukada
20.07.2009, 23:16:08
Cacheować można np. wyniki skomplikowanych obliczeń, w których nie ma zmiennych. To najprostszy przykład. Innym, bardziej przydatnym, może być lista zarejestrowanych użytkowników. Przy wejściu na odpowiednią stronę dane pobierane by były z bazy i zapisywane do pliku na serwerze. Przy każdym następnym wejściu sprawdzane by było, czy plik cache jest "świeży". Jeśli nie, na nowo byłyby pobierane dane z bazy i znowu zapisywane do pliku.
Fifi209
20.07.2009, 23:17:16
Cytat(MaestroS @ 20.07.2009, 23:10:41 )

Nie wiem - albo nie jestem w formie, albo jaki inny szkopuł, ale nie potrafię tego zrozumieć ... mająć 10,000 użytkowników jakie strony można cache'ować? Wszystko dzieje się wtedy bardzo dynamicznie, tj. utrzymując, że 10,000 osób coś aktualnie robi ... rezultat zawsze będzie inny ... chyba, że wchodzi w grę nadpisywanie zacache'owanych plików, ale to z kolei następne sprawdzanie starych, nadpisywanie ich i tak w kółko ... to naprawdę jest takie wydajne?
Zauważ jak np. działają gry internetowe powiedzmy punkty uaktualniane są raz na godzinę.
News'y - zmieniasz zawartość cache w przypadku dodania nowego, edycji, usunięcia
(dla przykładu

)
erix
20.07.2009, 23:21:12
Cytat
A co gdyby przy pierwszym wejściu pobierać dane z z bazy danych i przechowywać je w sesjach?
Daruj sobie sesje do cache'owania...

Cytat
ale to z kolei następne sprawdzanie starych, nadpisywanie ich i tak w kółko ... to naprawdę jest takie wydajne?
Owszem, jedno zapytanie potrafi zajeździć całą bazę, a nie ma możliwości optymalizacji. Poza tym, cache to nie tylko pliki; są dziesiątki innych rozwiązań.
PS: Wydzieliłem z:
http://forum.php.pl/index.php?showtopic=126106
MaestroS
20.07.2009, 23:22:08
Acha ... rozumiem ... czyli po prostu temat wyciąga się z bazy raz, potem się go po prostu cachuje i w razie edycji, usunięcia czy bóg wie czego jeszcze - modyfikuje? Jeżeli tak, to nie wydajniej jest cachować w bazie?
MaestroS
20.07.2009, 23:25:03
Dobrze erix, ale zapytanie podające wyraźne argumenty w dajmy na to "SELECT" wobec tematu z 1,000 postami będzie wydajniejsze, niż taki scache'owany plik? A jeżeli nie pliki, tylko baza - to wracamy do punktu wyjścia ...
erix
20.07.2009, 23:28:53
Scache'owany plik będzie tu w 90% przypadków szybszy. ;]
Cytat
Jeżeli tak, to nie wydajniej jest cachować w bazie?
Nie. Zestawienie połączenia z bazą wymaga czasu i zasobów (vide: specyfikacja TCP), a jeśli masz dobrze rozplanowany cache, to unikniesz łączenia z DBMS. ;]
MaestroS
21.07.2009, 00:13:03
Dobrze. Niech będą te pliki. Zarys mamy, tylko teraz trzeba napisać system, który by się ładnie zajął cachowaniem. Już tam kij z zapisem, ale usuwanie tekstu czy nadpisywanie ... od bardzo dawna nie robiłem nic z plikami, trza będzie chyba pamięć odświeżyć ...
Fifi209
21.07.2009, 00:27:52
Cytat(MaestroS @ 21.07.2009, 00:13:03 )

Dobrze. Niech będą te pliki. Zarys mamy, tylko teraz trzeba napisać system, który by się ładnie zajął cachowaniem. Już tam kij z zapisem, ale usuwanie tekstu czy nadpisywanie ... od bardzo dawna nie robiłem nic z plikami, trza będzie chyba pamięć odświeżyć ...
Po co wynajdywać koło na nowo?
Odpalasz google.pl wrzucasz:
pear
czytasz co to jest...
potem wrzucasz w google
pear cache lite
A tu masz artykuł jak zainstalować pear:
http://windowshosting.pl/PEAR:.skrypty.ktore.musisz.znac
Pilsener
22.07.2009, 12:08:30
Cytat
od bardzo dawna nie robiłem nic z plikami, trza będzie chyba pamięć odświeżyć
- nie trzeba, wystarczy file_put_contents + serialize i file_get_contents + unserialize.
Ja ostatnio wykonałem prosty system cache dla swoich potrzeb, który przechowuje szereg informacji (wymagających 5-8 zapytań mysql) w zserializowanej tablicy, obciążenie bazy spadło praktycznie do zera, bo cache jest aktualizowane tylko w PA, ręcznie lub automatycznie (podczas określonych akcji) - piszesz prostą klasę/funkcję do aktualizowania i cieszysz się wydajnością.
Prosty system cache napiszesz w pół dnia, przy większych projektach warto pomyśleć o np. memcache czy innych gotowyhc rozwiązaniach (choćby klasa Nospor'a etc.)
lukada
22.07.2009, 14:26:51
Cytat
- nie trzeba, wystarczy file_put_contents + serialize i file_get_contents + unserialize.
Jednak chyba więcej. Bo przecież czasami zajdzie potrzeba utworzenia nowego pliku, z innymi danymi cache, czasem usunąć, utworzyć folder na pliki z innej kategorii. Bo się bałagan porobi.
Cytat
Dobrze. Niech będą te pliki. Zarys mamy, tylko teraz trzeba napisać system, który by się ładnie zajął cachowaniem. Już tam kij z zapisem, ale usuwanie tekstu czy nadpisywanie ... od bardzo dawna nie robiłem nic z plikami, trza będzie chyba pamięć odświeżyć ...
http://pl.php.net/manual/pl/ref.filesystem.phpSprawdź fopen, fwrite, fclose, flock, is_dir, is_file, mkdir, unlink, rmdir, rename, basename, file_get_contents, f_gets (i pokrewne) i fread. Powinno wystarczyć

.
Fifi209
22.07.2009, 14:28:40
Cytat(lukada @ 22.07.2009, 14:26:51 )

Jednak chyba więcej. Bo przecież czasami zajdzie potrzeba utworzenia nowego pliku, z innymi danymi cache, czasem usunąć, utworzyć folder na pliki z innej kategorii. Bo się bałagan porobi.
Przecież file_put_contents w przypadku nieistnienia pliku utworzy go...
Nie przesadzaj, że będziesz miał tyle plików cache że będziesz je katalogował.
lukada
22.07.2009, 14:33:09
Cytat(fifi209 @ 22.07.2009, 15:28:40 )

Przecież file_put_contents w przypadku nieistnienia pliku utworzy go...
Nie przesadzaj, że będziesz miał tyle plików cache że będziesz je katalogował.
Ja wolę jednak wszystko katalogować, zawsze to większy porządek. A jak się strona rozrośnie, to po co od nowa wszystko pisać. Lepiej raz, a w miarę porządnie. Albo ściągnąć gotowe rozwiązania, ale to wiele nie uczy.
Fifi209
22.07.2009, 14:40:53
Cytat(lukada @ 22.07.2009, 14:33:09 )

Ja wolę jednak wszystko katalogować, zawsze to większy porządek. A jak się strona rozrośnie, to po co od nowa wszystko pisać. Lepiej raz, a w miarę porządnie. Albo ściągnąć gotowe rozwiązania, ale to wiele nie uczy.
Podglądnij rozwiązania typu: PEAR Cache Lite
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.