Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]Odświerzanie
Forum PHP.pl > Forum > Przedszkole
aras785
Witam. Zrobiłem odświeżanie strony z panelu admina. Klikam przeladuj i przeladowuje strone wszystkim co sa na stronie. Działa to tak, że zapisuje na innym serwerze godzine przeładowania i generuja nowa strone (zmienia tylko czas do porowania) i js sprawdza czy strona ma taki sam czas, jesli nie to przeladowuje.

Pokaze na przykladzie:

[JAVASCRIPT] pobierz, plaintext
  1. function sprawdz() {
  2. jQuery.getScript('http://s2.domena.pl/czas_3.js', function()
  3. {
  4. old = old();
  5. now = 1360049560; //czas ostatniego przeladowania
  6. if(old!=now) {
  7. window.location = location.href;
  8. }
  9. });
  10. }
  11. window.setInterval(sprawdz,7000);
[JAVASCRIPT] pobierz, plaintext


I to wszystko działa ale czasami odświeża cały czas. Nie wczytuje aktualnej godziny. Musze wejsc odswieżyć sobie strone i dopiero wtedy wczyta dobrze. Cache chyba... jak mozna to rozwiązać inaczej? Pozdrawiam
Sephirus
[JAVASCRIPT] pobierz, plaintext
  1. jQuery.getScript('http://s2.domena.pl/czas_3.js?r='+Math.random(), function() // dalszy kod ...
[JAVASCRIPT] pobierz, plaintext
aras785
Dzięki ale to nie to niestety bo sprawdzałem wczoraj.

U mnie wygląda to tak.

Mam stronę, a w niej iframe i w tym iframe jest właśnie strona, która się odświeża i w/w skrypt js.

Czasami po odświeżenie zawartość ramki dalej pokazuje stary czas, który jest podany w zmiennej: var now.

Sephirus
Rozumiem, że ten czas generowany jest z PHP i wrzucany do JS?

Czyli podejrzewasz, że cacheowane jest to co w ramce całe i stąd ten czas się nie zmienia?

Może spróbuj tej samej techniki. Gdy odświeżasz tą ramkę dodaj jakiegoś randomowego GETa do adresu.

(nie wiem czy dobrze rozumiem)
aras785
Dobrze myślisz.

Tak php generuje kod html (tworzy go) i tam wpisuje czas i drugi czas idzie na drugi serwer.

To w takim razie musiałbym zrobić ramke w ramce

czyli:

index -> ramka (if frame src=wlasciwa_ramka.html?1231231) -> wlasciwa ramka

I to by zadziałało?
Sephirus
Poczekaj poczekaj jest łatwiejsze wyjście smile.gif Już piszę...

EDIT:

Ten kod powinien wystarczyć o ile nie masz w tym adresie iframe'a żadnych zmiennych GET, jesli masz trzeba pokombinować. Ale ogólnie wystarczy nie odświeżać dosłownie a ładować z innym GETem wink.gif

[JAVASCRIPT] pobierz, plaintext
  1. function sprawdz() {
  2. jQuery.getScript('http://s2.domena.pl/czas_3.js', function()
  3. {
  4. old = old();
  5. now = 1360049560; //czas ostatniego przeladowania
  6. if(old!=now) {
  7. var url = window.location.href;
  8. url = url.split('?')[0] + '?r='+Math.random();
  9. window.location = url;
  10. }
  11. });
  12. }
  13. window.setInterval(sprawdz,7000);
[JAVASCRIPT] pobierz, plaintext
aras785
Dziękuje mistrzu świata. Sprawdzę będąc w domu bo teraz w robocie siedzę.

Wprowadziłem w/w skrypt i wszystko działa (chyba) jak należy. Dzięki
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.