![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 5.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mam plik o nazwie posty.php, który pobiera z bazy 5 rekordów i wyświetla je.
Rekordy w bazie czasem zmieniają się (najczęściej 5 razy dziennie). Zastanawiałem się, czy istnieje dobry sposób na odciążenie serwera poprzez zastąpienia pliku posty.php statycznym posty.html, który byłby modyfikowany po każdej zmianie w bazie. W ten sposób w ogromnej mierze zmniejszyłbym zasobożerność aplikacji (serwując użytkownikom tylko plik html i wysyłając do bazy zapytania tylko kilka razy dziennie). 1) Co myślicie o tym pomyśle? Muszę liczyć sie z dużą publiką, a co za tym idzie szansą, że ktoś wejdzie na stronę akurat kiedy plik będzie nadpisywany (i dostanie błąd lub niekompletny plik). 2) Jak mógłbym to rozwiązać? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jedno słowo. Cache.
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 5.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mówisz o cache po stronie użytkownika? To nie rozwiązuje mojego problemu przy dużej liczbie nowych uzytkowników.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli sam piszesz ten skrypt, to możesz to ładnie zintegrować z cache (oczywiście po stronie serwera). Tworząc cache zapisuj je z długim okresem ważności, a po momencie edycji rekordów przeładowujesz cache. Wtedy użytkownik widzi ciągle aktualne wartości i nie pobiera ich z bazy przy każdym wejściu, każdy użytkownik - nie tylko powracający :-p
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 5.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
OK, zatem cache w PHP jest rozwiązaniem, ale wymaga jednak trochę pracy serwera (PHP). Czy znacie jeszcze jakieś inne? Myślałem o czymś podobnym do stworzenia soft linka, który będzie wskazywał na plik w zależności od czasu.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wpisy masz w bazie tak? To jak chcesz zrobić soft linka (a nie sym linka?) do bazy? Chyba musisz wcześniej ten plik wygenerować, prawda?
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
OK, zatem cache w PHP jest rozwiązaniem, ale wymaga jednak trochę pracy serwera (PHP). Czy znacie jeszcze jakieś inne? Hmmm... Skoro już nie chcesz użyć cache, to może inna alternatywna metoda "cache", tyle że to tak trochę "na około": - wyświetlanie odbywa się przez pobieranie określonego pliku z wyświetlaną zawartością, czylipo prostu includujesz plik z dysku, lub po prostu wyswietlasz ten plik posty.html - generowanie tego pliku odbywa się przez wywołanie innego skryptu, który wywołany z crona np. raz na godzinę. w takim wypadku wyświetlenie masz danych statycznych, a człowiek nie musi szykować danych. Ale uwaga: nie wiem co się będzie działo w czasie, gdy skrypt będzie generował plik a ktoś w międzyczasie skrypt wyświetlający o niego poprosi Nie rozumiem co strasznego jest w zwykłej konstrukcji: if ((PlikCacheNieIstnieje) OR (PlikCacheJestPrzeterminowany) ) { $DaneTXT = PObierzDanezBazy(); $ZapiszPlikCache($DaneTXT); } else { $DaneTXT = PObierzDanezPlikuCache(); } WyswietlDane(DaneTXT); Ten post edytował skleps 17.12.2011, 10:13:45 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 02:15 |