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 ? -- Greg
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 ? -- Greg _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
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. -- Thomas
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
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/
-- Greg
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/
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Damien WETZEL (ATANAR TECHNOLOGIES) ("`-/")_.-'"``-._ http://www.atanar.com . . `; -._ )-;-,_`) (v_,)' _ )`-.\ ``-' Phone:+33 9 63 05 59 99 _.- _..-_/ / ((.' - So much to do, so little time - ((,.-' ((,/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
participants (7)
-
Antoine Drochon -
Benjamin BILLON -
Damien Wetzel -
Greg -
neo futur -
Thomas Pedoussaut -
Valentin Beck