2011-10-14 3 views
4

J'ai beaucoup de données du côté client composées principalement de grandes baies et j'ai besoin de renvoyer ces informations au serveur et de pouvoir les analyser facilement. J'utilise jQuery sur le front end et PHP (CodeIgniter) sur le backend.Quelle est la meilleure pratique pour transmettre de grandes quantités de données côté client au serveur?

À l'heure actuelle, je ne fais que POSTER un énorme tableau en utilisant jQuery $ .post. Est-ce une bonne idée ou devrais-je en utiliser plusieurs plus petites?

De même, devrais-je utiliser les méthodes ajax de jQuery ou y at-il quelque chose de mieux que cela?

+0

Quelle sont vos –

+0

Il peut y avoir jusqu'à 1000 éléments –

Répondre

1

Si vous pouvez combiner toutes les données en un seul article, c'est définitivement la solution. Les navigateurs, notamment IE (gag), s'étouffent lorsque vous dépassez trop de requêtes XHR simultanées sur le même serveur. En règle générale, les meilleures pratiques pour l'envoi de données au serveur peuvent être résumées comme suit: «le moins possible en un nombre de requêtes aussi réduit que possible». Comment vous strucutre les données est à vous.

Si vous envoyez beaucoup via jQuery, pensez à le compresser avec quelque chose comme jsend (un plugin jQuery à compresser, avec un équivalent PHP pour décompresser).

2

La taille maximale de la publication sera déterminée par le paramètre post_max_size dans le fichier PHP.INI de votre serveur. Le paramètre par défaut est 8 Mo, ce qui représente BEAUCOUP d'espace pour les données de publication. Gardez à l'esprit qu'il peut y avoir d'autres facteurs affectant cette limite (memory_limit, etc.). En résumé, si vos 1000 éléments sont assez petits, un message régulier avec jQuery est probablement une approche adéquate.

0

Darin répondu à la question similaire ici: Sending large data to server

Utilisez un verbe HTTP POST au lieu de GET:

$.ajax({ 
    url: '/foo', 
    type: 'POST', 
    data: { value: someVariableThatCouldBeHuge }, 
    success: function(result) { 
     // TODO: process the results 
    } 
}); 

ou l'équivalent:

$.post('/foo', { value: someVariableThatCouldBeHuge }, function(result) { 
    // TODO: process the results 
}); 

Pekka a suggéré de sérialisation des données et la rupture en morceaux si le poste n'est pas une option: Sending a large parametrized data set as a GET request

+0

C'est exactement ce que je fais. –

0

Vous pouvez utiliser FormData: "grands tableaux"

var formData = new FormData(); 
formData.append('filename', filename); 
formData.append('data', data); 
$.ajax({ 
    url: "FileUploadServlet", 
    type: "POST", 
    data: formData, 
    cache: false, 
    contentType: false, 
    processData: false}); 
Questions connexes