Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Cache - co i jak
kajzur
post
Post #1





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Cache'ujesz te dane które się rzadko zmieniają ;p
Go to the top of the page
+Quote Post
MaestroS
post
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


A nie można pewnych informacji, które się "rzadko zmieniają" trzymać w sesjach? Czy pomyliłem idee funkcjonalności?
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ok, a sesję komuś udostępniasz? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
MaestroS
post
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


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 ( ;
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
lukada
post
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 2
Dołączył: 4.02.2009

Ostrzeżenie: (0%)
-----


A co gdyby przy pierwszym wejściu pobierać dane z z bazy danych i przechowywać je w sesjach?
Go to the top of the page
+Quote Post
MaestroS
post
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
lukada
post
Post #8





Grupa: Zarejestrowani
Postów: 38
Pomógł: 2
Dołączył: 4.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) )
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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... (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

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
Go to the top of the page
+Quote Post
MaestroS
post
Post #11





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
MaestroS
post
Post #12





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


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 ...
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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. ;]
Go to the top of the page
+Quote Post
MaestroS
post
Post #14





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 8.11.2006
Skąd: Kanagawa-ken, Japonia

Ostrzeżenie: (10%)
X----


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ć ...
Go to the top of the page
+Quote Post
Fifi209
post
Post #15





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pilsener
post
Post #16





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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.)
Go to the top of the page
+Quote Post
lukada
post
Post #17





Grupa: Zarejestrowani
Postów: 38
Pomógł: 2
Dołączył: 4.02.2009

Ostrzeżenie: (0%)
-----


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.php
Sprawdź fopen, fwrite, fclose, flock, is_dir, is_file, mkdir, unlink, rmdir, rename, basename, file_get_contents, f_gets (i pokrewne) i fread. Powinno wystarczyć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .

Ten post edytował lukada 22.07.2009, 14:30:56
Go to the top of the page
+Quote Post
Fifi209
post
Post #18





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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ł.
Go to the top of the page
+Quote Post
lukada
post
Post #19





Grupa: Zarejestrowani
Postów: 38
Pomógł: 2
Dołączył: 4.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Fifi209
post
Post #20





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 01:11