Bonjour,
comment améliorer le temps d'affichage d'une page web dynamique (PHP) à l'autre bout du monde ? (Sans délocalisation de serveurs)
Les CDNs permettent d'améliorer le temps d'affichage des documents statiques. Délocaliser des serveurs peut couter cher dans certain pays, et puis dans ce cas il faut déporter tous les services associés : memcached/redis, DB, ...
Connaissez vous d'autres solutions ?
Salut,
Les CDN des années 2000 faisaient que du cache, tu as raison.
Entre temps, il y a quelques évolutions et tu peux accélérer des contenus dynamiques.
Le facteur d'accélération dépend directement de la manière dont est conçue l'appli et où sont les utilisateurs mais généralement plus ils sont loin, plus le gain est important, tout en gardant l'application centralisée à un seul endroit.
Dispo hors liste si tu veux creuser le sujet.
A+ Antoine
From: Greg greg-frsag@duchatelet.net Reply-To: French SysAdmin Group frsag@frsag.org Date: mardi 23 juillet 2013 15:31 To: French SysAdmin Group frsag@frsag.org Subject: [FRsAG] optim page load à l'autre bout du monde
Bonjour,
comment améliorer le temps d'affichage d'une page web dynamique (PHP) à l'autre bout du monde ? (Sans délocalisation de serveurs)
Les CDNs permettent d'améliorer le temps d'affichage des documents statiques. Délocaliser des serveurs peut couter cher dans certain pays, et puis dans ce cas il faut déporter tous les services associés : memcached/redis, DB, ...
Connaissez vous d'autres solutions ?
On 2013-07-23 15:31, Greg wrote:
comment améliorer le temps d'affichage d'une page web dynamique (PHP) à l'autre bout du monde ? (Sans délocalisation de serveurs)
Les CDNs permettent d'améliorer le temps d'affichage des documents statiques. Délocaliser des serveurs peut couter cher dans certain pays, et puis dans ce cas il faut déporter tous les services associés : memcached/redis, DB, ...
Depuis l'autre bout du monde, ce qui te tue c'est la latence et le 3 way handshake. Il faut donc minimiser au maximum (oxymore..) le nombre de connections TCP pour servir tes assets, et aussi essayer de paralleliser un maximum ces requetes.
C'est donc dans la conception du site que tu dois travailler: - mettre si possible les css inline, ou au mieux avoir un seul fichier css pour tout ton site. (reduire le nombre de cnx) - activer le http keepalive (pour passer plusieurs assets dans la meme connection TCP ) - utiliser de l'aliasing massif des serveurs (img.foo.com, css.foo.com, js.foo.com, app.foo.com) pour que le navigateur ouvre plusieurs sessions simultanées sur ton backend
Sinon du proxying delocalisé permet quand meme de reduire les 3 way handshake, car la connection proxy-backend elle reste ouverte en keepalive.
Bonjour,
On Jul 23, 2013, at 8:49 PM, Thomas Pedoussaut thomas@pedoussaut.com wrote:
C'est donc dans la conception du site que tu dois travailler: […]
- utiliser de l'aliasing massif des serveurs (img.foo.com, css.foo.com,
js.foo.com, app.foo.com) pour que le navigateur ouvre plusieurs sessions simultanées sur ton backend
Les multiples requêtes DNS ne sont pas forcément une bonne idée, il vaut mieux limiter les aller-retours!
Par contre, deux petites choses qui marchent bien pour optimiser les éléments statiques et l'expérience utilisateur: - utiliser le cache du navigateur au maximum (mod_expires) - et implémenter les sprites CSS pour les éléments d'interface/icônes/etc.
Les optimizations proposées par Page Speed peuvent être un bon début, après tout dépend de l'application: https://developers.google.com/speed/pagespeed/
avoir un _vrai_ cdn, qui a reellement des ips un peu partout.
appengine assure ca comme un dieu : http://www.just-ping.com/index.php?vh=static.ww7.be&c=&s=ping! ( voir le nombre d ips differentes selon la source )
pour ca quelques lignes de python suffisent : https://github.com/neofutur/myCDN/
en pur static ou reverse cdn !
2013/7/23 Valentin Beck valentin.beck@gmail.com:
Bonjour,
On Jul 23, 2013, at 8:49 PM, Thomas Pedoussaut thomas@pedoussaut.com wrote:
C'est donc dans la conception du site que tu dois travailler: […]
- utiliser de l'aliasing massif des serveurs (img.foo.com, css.foo.com,
js.foo.com, app.foo.com) pour que le navigateur ouvre plusieurs sessions simultanées sur ton backend
Les multiples requêtes DNS ne sont pas forcément une bonne idée, il vaut mieux limiter les aller-retours!
Par contre, deux petites choses qui marchent bien pour optimiser les éléments statiques et l'expérience utilisateur:
- utiliser le cache du navigateur au maximum (mod_expires)
- et implémenter les sprites CSS pour les éléments d'interface/icônes/etc.
Les optimizations proposées par Page Speed peuvent être un bon début, après tout dépend de l'application: https://developers.google.com/speed/pagespeed/
-- Valentin _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Merci pour vos réponses. Pour le contenu statique il existe plein de solutions, ce qui m'intéresse c'est le contenu dynamique.
Donc je résume : - CDN applicatif ou serveur reverse-proxy type NGiNX avec keepalive, pour gagner sur le nombre d'établissement de connexions - découper le contenu sur plusieurs domaines: oui on le fait déjà, mais il est conseillé d'en avoir que 2, et les navigateurs ne dépassent pas 3 connexions simultanés. Il faut comparer avec le keepalive, les courbes doivent se croiser - limiter le nombre de fichier CSS (mod_concat par exemple), utiliser les sprites, ...
Niveau coûts, aujourd'hui j'ai 3 VMs aux 3 coins du monde pour le prix d'un CDN ... Le choix n'est pas si évident ! Une VM avec un NGiNX et les upstreams configurés en keepalive doit faire des miracles... J'espère bien pouvoir le tester ;)
Le 23 juillet 2013 18:39, neo futur frsag@ww7.be a écrit :
avoir un _vrai_ cdn, qui a reellement des ips un peu partout.
appengine assure ca comme un dieu : http://www.just-ping.com/index.php?vh=static.ww7.be&c=&s=ping! ( voir le nombre d ips differentes selon la source )
pour ca quelques lignes de python suffisent : https://github.com/neofutur/myCDN/
en pur static ou reverse cdn !
2013/7/23 Valentin Beck valentin.beck@gmail.com:
Bonjour,
On Jul 23, 2013, at 8:49 PM, Thomas Pedoussaut thomas@pedoussaut.com
wrote:
C'est donc dans la conception du site que tu dois travailler: […]
- utiliser de l'aliasing massif des serveurs (img.foo.com, css.foo.com,
js.foo.com, app.foo.com) pour que le navigateur ouvre plusieurs
sessions
simultanées sur ton backend
Les multiples requêtes DNS ne sont pas forcément une bonne idée, il vaut
mieux limiter les aller-retours!
Par contre, deux petites choses qui marchent bien pour optimiser les
éléments statiques et l'expérience utilisateur:
- utiliser le cache du navigateur au maximum (mod_expires)
- et implémenter les sprites CSS pour les éléments
d'interface/icônes/etc.
Les optimizations proposées par Page Speed peuvent être un bon début,
après tout dépend de l'application:
https://developers.google.com/speed/pagespeed/
-- Valentin _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Liste de diffusion du FRsAG http://www.frsag.org/
Les fournisseurs de CDN proposent souvent des solutions pour ça. Il ne s'agit plus de cache a proprement parlé mais d'accélération (ou de déport des scripts, mais c'est une autre histoire). Par exemple, pour tout ce qui ne peut pas être mis en cache, le fournisseur ouvre des connexions persistantes entre le serveur source et leur node la plus proche. Il utilisera aussi des accélarateurs (Cisco WAAS ou équivalent), ou par exemple dans le cas de ChinaCache, leur lien dédié Pékin - Francfort
Benjamin
Le 23 juillet 2013 15:31, Greg greg-frsag@duchatelet.net a écrit :
Bonjour,
comment améliorer le temps d'affichage d'une page web dynamique (PHP) à l'autre bout du monde ? (Sans délocalisation de serveurs)
Les CDNs permettent d'améliorer le temps d'affichage des documents statiques. Délocaliser des serveurs peut couter cher dans certain pays, et puis dans ce cas il faut déporter tous les services associés : memcached/redis, DB, ...
Connaissez vous d'autres solutions ?
Greg
Liste de diffusion du FRsAG http://www.frsag.org/
Salut Greg, Comme l'a dit Antoine les CDNs proposent maintenant ce qu'ils appellent application delivery. Le concept est d'avoir non plus un proxy entre l'internaute et l'origine, mais deux. Ayant la maitrise sur les deux bouts ils peuvent faire de la cuisine sur le stack tcp/ip pour limiter les aller retour donc la latence et ainsi augmenter le throughput. Damien,
Greg writes:
Bonjour,
comment améliorer le temps d'affichage d'une page web dynamique (PHP) à l'autre bout du monde ? (Sans délocalisation de serveurs)
Les CDNs permettent d'améliorer le temps d'affichage des documents statiques. Délocaliser des serveurs peut couter cher dans certain pays, et puis dans ce cas il faut déporter tous les services associés : memcached/redis, DB, ...
Connaissez vous d'autres solutions ?
Greg
Liste de diffusion du FRsAG http://www.frsag.org/