Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][AJAX]jak nie zabić przeglądarki
Forum PHP.pl > Forum > XML, AJAX > AJAX
zderek
Witam,
pracuję obecnie nad serwisem w którym dane muszą być aktualizowane bez akcji ze strony użytkownika w dodatku dość często i dla sporej liczby obiektów.
Problem wygląda następująco:

na stronie mam ok. 20 obiektów, które mają liczniki czasu (ważności).
Licznik pokazuje czas jaki upływa do utraty ważności obiektu, i jest aktualizowany co sekundę.
Nie byłoby problemu, gdyby licznik miał tylko sobie schodzić w dół, ale w wyniku akcji użytkownika licznik może zmienić wartość i odliczanie musi odbywać się wtedy od nowej wartości, w dodatku musi oczywiście zaktualizować się u wszystkich klientów.

Sama funkcja js wygląda tak:

Kod
var $j = jQuery.noConflict();  
$j(document).ready(function(){

down(".product ul[id]");

function down(grab){  
var pid = $j(grab).attr("id");  
     $j(grab).everyTime(1000).each(function(i) {  
      
          $j.ajax({  
            type: "GET",  
            url: "/web/pl/ajax/product.php",  
            data: "product_id="+pid,  
            success: function(msg){  
              $j(grab).html(msg);  
            },  
            error: function(msg){  
              alert("błąd!!!");  
            }  
          });  
          
     });
}


tak więc js odpytuje skrypt product.php co 1s dla każdego z produktów.
Powoduje to niestety praktycznie "zabicie" przeglądarki i aż się boję pomyśleć co mogłoby się stać z serwerem przy ilości powiedzmy 1000 userów.

Czy jest jakiś sposób aby serwer wysyłał dane do skryptu tylko w momencie jeśli licznik uległ zmianie innej niż domyślne odliczanie? Bo rozumiem, że przeglądarka i tak musi odpytać co 1s serwer - niezależnie od okoliczności.
A może da się to rozwiązać wysyłając odpowiednie nagłówki?

Z góry dziękuję za wskazówki.
erix
Hmm, może zwracaj nagłówek 304, jeśli niezmodyfikowane?

Ale i tak będzie to zajeżdżało serwer, poza tym - opóźnienia na łączach mogą zabić całą ideę skryptu, ja bym tu inaczej to rozwiązał. Przede wszystkim tak, aby wysyłane było tylko jedno zapytanie ze wszystkimi produktami, a nie tylko dla jednego z osobna. Albo chociaż zmniejszyć rozdzielczość licznika.
nospor
zakladam ze robisz cos ala podbij.pl

Odpytuj wiec co 1 sekunde serwer o wszystkie widoczne elementy a nie kazdy z osobna - taki robi podbij i jakos sie przegladarka nie zazyna.
Wspomnial tez otym erix wyzej
zderek
tak serwis jest coś ala to (czego to klienci nie wymyśla a szef nie zgodzi się robić),
dzięki za odpowiedzi spróbuję tak to rozwiązać.

Pozdrawiam
jarek_bolo
Ostatnio w słyszałem, że Ministerstwo Finansów coś się czepia takiej formy aukcji, że łamie jakieś zasady czy coś.
To Ci Platforma pro przedsiębiorcza jest dopiero smile.gif No ale nic, nasze społeczeństwo takie, że na własnej skórze jak się nie przekona to nie zrozumie co wybrało...
zderek
Cytat(jarek_bolo @ 30.03.2009, 13:58:54 ) *
Ostatnio w słyszałem, że Ministerstwo Finansów coś się czepia takiej formy aukcji, że łamie jakieś zasady czy coś.
To Ci Platforma pro przedsiębiorcza jest dopiero smile.gif No ale nic, nasze społeczeństwo takie, że na własnej skórze jak się nie przekona to nie zrozumie co wybrało...


serwis nie jest mój ani dla mnie, więc mnie to nie straszne winksmiley.jpg
ja generalnie dłubię tylko w php ale na starość przyszło mi też z AJAXem spróbować się zaprzyjaźnić 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.