Bonjour,

pour commencer, bonne fête à tous,

nous sommes actuellement en train de développer une application full web, et nous aimerions qu'elle puisse fonctionner hors ligne.
Nous en somme à faire la synchronisation entre le serveur et le poste client, mais nous rencontrons un problème : lorsqu'on fait la requête AJAX pour récupérer les informations, toutes les autres requêtes AJAX sont bloquées tant que la synchronisation n'est pas terminée (la synchronisation est faite toutes les minutes environ).

A quoi cela peut-il être du ?
Est ce que le fait qu'on travail en local, avec wamp, peut poser ce problème ?

Coté PHP, pour la synchronisation, nous faisons environ 35 requetes SQL, et la requête à une taille de 90 Mo environ.

Nous avons essayé d'utiliser les Web Workers afin de mettre la requete AJAX dans un thread séparé, mais nous n'avons pas vu de différence. Il arrive même que le navigateur plante une fois la synchronisation terminée.
Voici le code que nous avons utilisé pour les Web Workers :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var worker = new Worker('sync.js');
worker.addEventListener('message', function(e) {
    var data = e.data;
 
    /*
     * insertion des données sur le poste client (IndexedDB)
     */
 
    worker.terminate();
}, false);
worker.postMessage(timestamp);
et dans le fichier sync.js :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
function messageHandler(e) {
    var xhr = new XMLHttpRequest();
    var timestamp = e.data;
 
    if (xhr && xhr.readyState !== 0) {
        xhr.abort();
    }
 
    xhr.open("GET", "sync.php?timestamp=" + timestamp, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
            postMessage(JSON.parse(xhr.responseText));
        }
    }
    xhr.send(null);
}
 
this.addEventListener("message", messageHandler, false);
Merci à tous