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!!!");
}
});
});
}
$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.