par
kodjo » 23 janv. 2017, 15:01
Bonjour à tous,
J'ai une application qui fait actuellement un file_get_contents en PHP sur un énorme fichier json qui se trouve sur un serveur distant et affiche le résultat dans le navigateur . C'est hyper lent et utiliser curl a un peu amélioré la performance, sans pour autant donner de résultat acceptable.
J'ai donc envisagé d'utiliser un $.ajax en jquery pour charger le json mais je me heurte à l'erreur "Origin is not allowed by Access-Control-Allow-Origin" qui survient lorsque l'on fait des requêtes sur un serveur distant en javascript dans un navigateur.
La meilleure solution à ce problème est si possible d'ajouter un Access-Control-Allow-Origin: * dans le header de la page qui fournit le json. Mais c'est problématique dans mon cas car je ne contrôle pas le serveur distant.
La meilleure solution que je vois est d'utiliser node.js, mais je ne peux pas réécrire toute l'application. Je cherche donc la solution optimale avec les options dont je dispose, c'est à dire PHP et JQuery essentiellement.
Voici le scénario que j'envisage:
1- Mon application PHP lance un script jQuery $.ajax qui appelle une URL node.js sur le même serveur
2- Cette URL node.js fournit le contenu JSON après avoir contacté le serveur distant
Avantages:
- pas de Access-Control-Allow-Origin puisque c'est une application node.js qui fait la requête en arrière plan.
- node js est réputé performant
Inconvénient:
Ça fait beaucoup de requêtes pour un fichier JSON: l'utilisateur charge la page en PHP, puis Jquery Ajax vers url node.js locale, puis appel serveur distant depuis node.js, réception de la réponse => JQuery => Affichage.
Pour l'instant, je n'ai jamais créé d'appli en node.js mais j'ai étudié le language.
Je sais qu'avec le côté asynchrone de la requête jQuery Ajax et node.js + affichage progressif du HTML final, je peux donner l'impression à l'utilisateur qu'il n'a pas attendu trop longtemps.
Questions, sachant que c'est PHP qui charge la page au départ:
- Le gain de performance de node.js justifie tous les détours dans ce contexte?
- Y a-t-il une meilleure approche avec jQuery/Node.js ou autre librairie javascript pour faire un appel distant sur un énorme fichier JSON?
En vous remerciant par avance pour tout commentaire.
Bonjour à tous,
J'ai une application qui fait actuellement un file_get_contents en PHP sur un énorme fichier json qui se trouve sur un serveur distant et affiche le résultat dans le navigateur . C'est hyper lent et utiliser curl a un peu amélioré la performance, sans pour autant donner de résultat acceptable.
J'ai donc envisagé d'utiliser un $.ajax en jquery pour charger le json mais je me heurte à l'erreur "Origin is not allowed by Access-Control-Allow-Origin" qui survient lorsque l'on fait des requêtes sur un serveur distant en javascript dans un navigateur.
La meilleure solution à ce problème est si possible d'ajouter un Access-Control-Allow-Origin: * dans le header de la page qui fournit le json. Mais c'est problématique dans mon cas car je ne contrôle pas le serveur distant.
La meilleure solution que je vois est d'utiliser node.js, mais je ne peux pas réécrire toute l'application. Je cherche donc la solution optimale avec les options dont je dispose, c'est à dire PHP et JQuery essentiellement.
Voici le scénario que j'envisage:
1- Mon application PHP lance un script jQuery $.ajax qui appelle une URL node.js sur le même serveur
2- Cette URL node.js fournit le contenu JSON après avoir contacté le serveur distant
Avantages:
- pas de Access-Control-Allow-Origin puisque c'est une application node.js qui fait la requête en arrière plan.
- node js est réputé performant
Inconvénient:
Ça fait beaucoup de requêtes pour un fichier JSON: l'utilisateur charge la page en PHP, puis Jquery Ajax vers url node.js locale, puis appel serveur distant depuis node.js, réception de la réponse => JQuery => Affichage.
Pour l'instant, je n'ai jamais créé d'appli en node.js mais j'ai étudié le language.
Je sais qu'avec le côté asynchrone de la requête jQuery Ajax et node.js + affichage progressif du HTML final, je peux donner l'impression à l'utilisateur qu'il n'a pas attendu trop longtemps.
Questions, sachant que c'est PHP qui charge la page au départ:
- Le gain de performance de node.js justifie tous les détours dans ce contexte?
- Y a-t-il une meilleure approche avec jQuery/Node.js ou autre librairie javascript pour faire un appel distant sur un énorme fichier JSON?
En vous remerciant par avance pour tout commentaire.