Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ajax w tle - kaszowanie strony
Forum PHP.pl > Forum > PHP
szagi3891
Tworze sobie czat który będzie funkcjonował na zasadzie odpytywania serwera w tle za pomocą ajaxu z nowych wiadomości. Jeśli coś się zmieni i ktoś doda jakąś nową wiadomość to czat sobie szybciutko je dościąga i zaraz je wyświetli.
Do zwracania stanu serwera służy pliczek "status.php" który zwraca w skrócie ujmując datę ostatniej wiadomości (ostatniej modyfikacji).

No i problem jest następujący :

Na moim komputerze poprawnie wyświetla się ten plik pokazując datę ostatniej modyfikacji niezależnie w czym go otworzę , FF, IE, OP ...

Na komputerze kumpla obok już ten pliczek się nie wyświetla. Za każdym razem pokazują białą stronę. Co lepsze zdecydowanej większości ludzi na innych kompach też nie chce pokazywać zawartości tego pliczku.

Oczywiście dodałem nagłówki które mają spowodować że przeglądarka ma nie zapisywać tego pliku w cache :
  1. <?php
  2. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  3. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT');
  4. header('Cache-Control: no-cache, must-revalidate');
  5. header('Pragma: no-cache');
  6. header('Content-Type: text/html');
  7. ?>

które są zaczerpnięte z książki.

Co może być przyczyną tego dziwnego zachowania ? Miał ktoś może podobne problemy ? Ogólnie wszystkie zapytania wiszą.
yaro
Tak się tylko zapytam. Masz to na serwerze który wszyscy widzą?
Czy inne podstrony, pliki działają?

A propo nagłówków, to one nie zawsze działają pod każdą przeglądarką.
NoiseMc
Mialem ten sam problem z komentarzami takimi jak w obserwatorium na wykop.pl. cache. Sa ogolnie dwa sposoby na to, w moim przypadku zadzialal ten ktorego Ty uzyles, opisany rowniez na jakims blogu. Drugi sposob to dodawanie do Query String-a timestampa dzieki czemu kazdorazowo wywolujesz teoretycznie inny plik tak wiec za kazdym requestem masz swieza kopie pliku w keszu, to rozwiazanie rowniez opisane jest na blogu do ktorego linka podalem oraz tutaj dla Javy
szagi3891
Tak, strona jest na serwerze który jest ogólnie dostępny.

Problem okazało się znajdował się w czym innym. Głupi błąd z mojej strony. Okazało się że przechwytywanie błędów i buforowanie strony nie zadziałało jak powinno.

Błąd polegał na tym że próbowałem odczytywać ciastko z tablicy cookie ze zmiennej która nie była zdefiniowana. To generowało notifisa. Procedura przechwytywania błędów dostawała za dużą tablicę argumentów które to niepoprawnie przetwarzałem powodując lawinowy wzrost alokowanej pamięci.

W każdym razie dodałem jeszcze ten drugi sposób oraz poprawiłem główną przyczynę błędu. Na razie działa bez zarzutu smile.gif
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.