Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Cacheowanie fragmentów strony - problem
Ivellios
post 5.06.2011, 14:43:56
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 2.03.2007

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


Ostatnio ilość użytkowników odwiedzających jeden z moich serwisów oraz ilość generowanych odsłon spowodowały powstanie zbyt dużego obciążenia serwera. Postanowiłem więc spróbować poszukać lub we własnym zakresie opracować jakiś system cache, który zapisywałby generowane dokumenty html lub ich fragmenty w wybranym katalogu na serwerze, później skrypt tylko wczytywałby te fragmenty zamiast je generować.

W chwili obecnej kod php tego cache wygląda tak:
  1. $cachefile = "cache/najnowszeartykuly.html";
  2. $cachetime = 72 * 60 * 60; // 72 godziny
  3. // Wyciagamy odpowiedni plik z cache jesli ma taki sam czas lub jest nowszy od czasu zdefiniowanego w $cachetime
  4. if (file_exists($cachefile) && $cachetime < filemtime($cachefile)) {
  5. include($cachefile);
  6. echo "<!-- Wczytane z pamieci podrecznej z data ".date('H:i', filemtime($cachefile))." -->";
  7. }

Dalej następuje generowanie treści, na końcu zapis do pliku:
  1. $fp = fopen($cachefile, 'w');
  2. fclose($fp);

Problem polega na tym, że tą ostatnią część kodu muszę umieszczać na samym końcu, ponieważ jeśli umieszczę ją wcześniej, buforowanie w tym miejscu zostaje przerwane. Próbowałem zastąpić ob_end_flush() innymi funkcjami, jednak nawet te, które teoretycznie nie powinny zatrzymywać buforowania, czynią to.

Czy da się jakoś ten problem obejść? Ewentualnie czy mógłby mi ktoś polecić jakiś system cache'ujący który pozwalałby na wyłączenie spod jego działania wybranych fragmentów serwisu?

Tak jak wspominałem, potrzebuję cache'ować jedynie część strony ponieważ w innych miejscach mam poinstalowane różne rzeczy typu systemy reklam, itd, których zawartość jednak przy każdym wyświetleniu powinna się zmieniać.

Daję temat do "Przedszkola", ponieważ nie jestem za bardzo obznajomiony z php (właściwie to się dziwię że udało mi się zbudować dwa duże serwisy, znając jedynie podstawy programowania w tym języku tongue.gif ), a obsługa cache to już dla mnie nieco wyższa szkoła jazdy wink.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 19:42