Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczna treść jako statyczna
Forum PHP.pl > Forum > PHP
zeczonyswiadek
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ć?

skowron-line
Jedno słowo. Cache.
zeczonyswiadek
Mówisz o cache po stronie użytkownika? To nie rozwiązuje mojego problemu przy dużej liczbie nowych uzytkowników.
skowron-line
Cytat(zeczonyswiadek @ 16.12.2011, 15:24:57 ) *
Mówisz o cache po stronie użytkownika?

yyy nie
vokiel
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
zeczonyswiadek
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.
vokiel
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?
skleps
Cytat(zeczonyswiadek @ 16.12.2011, 15:48:22 ) *
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);
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.