4 votes

Améliorer les performances en utilisant un serveur de fichiers statiques supplémentaire

Je planifie un grand site Web qui comprend de nombreux actifs statiques (js, css, images et vignettes) dans les pages générées. Ce site web utilisera TYPO3 comme CMS (c'est une exigence du client).

Je pense que je pourrais sérieusement améliorer les performances et les temps de chargement des pages en utilisant une configuration à deux serveurs. Un serveur sur lequel l'application principale (PHP) tourne et un autre sur lequel les fichiers statiques sont servis par une version allégée d'Apache ou quelque chose comme lighthttpd.

L'inclusion de fichiers js ou css à partir du serveur de fichiers n'est bien sûr pas un problème. Il suffit d'utiliser une url absolue http://static.example.com/js/main.js et en finir avec ça.

Mais : ce site web aura des pages contenant de NOMBREUSES vignettes d'images de produits, par exemple. Je vois donc deux problèmes lorsque l'application principale essaie de créer une miniature d'une image :

  1. l'image originale comme products/some.jpg est téléchargé sur le serveur de fichiers statiques et donc pas sur le même serveur que l'application PHP qui tente de créer la vignette.

  2. TYPO3 écrit les vignettes créées dans un répertoire temporaire qui est censé être sur le même serveur. Par conséquent, des centaines de vignettes seront écrites et servies à partir de ce répertoire temporaire qui est sur le même serveur que l'application principale -> le serveur de fichiers statiques est dans ce cas fondamentalement inutile, toutes les vignettes seront demandées sur le serveur de l'application principale.

Ma question est donc la suivante : comment surmonter ces lacunes ?

Est-il possible d'établir des liens symboliques entre des répertoires et d'autres répertoires ? serveur ?

Ainsi, par exemple, si PHP tente d'ouvrir l'image originale des produits pour la création de vignettes avec l'option imagecreate("products/some.jpg") le dossier des produits "pointe" réellement vers le dossier des produits sur le serveur d'images statiques ? Je sais que quelque chose comme ça peut être fait avec .htaccess mais est-ce possible au niveau du système de fichiers ?

7voto

rkthkr Points 8463

Cache de Varnish est idéal pour cela !

alt text
(source : <a href="http://www.mocsystems.com/typo3temp/pics/1bd7cb81a0.png" rel="nofollow noreferrer">mocsystems.com </a>)

Vous pouvez trouver ceci article intéressant.

0 votes

Merci beaucoup pour cet article ! Il correspond exactement au problème auquel je suis confronté. J'ai lu un peu sur le vernis avant mais j'ai oublié de le considérer dans ce cas. Vous suggérez donc de ne pas utiliser un serveur de fichiers supplémentaire mais plutôt d'utiliser une machine et d'utiliser le cache de varnish afin de réduire la charge ? Cela faciliterait probablement les choses.

0 votes

Oui, même sur la même machine, un proxy inverse de mise en cache sauvera la situation. Il ne s'agit pas seulement de la mise en cache. La gestion des connexions avec apache prefork (qui est le choix le plus compatible avec PHP) tue les performances. Tout reverse proxy réduira considérablement le nombre de processus apache et donc l'utilisation de la mémoire.

0 votes

Hm, ça semble intéressant. Y a-t-il de bons articles sur la façon d'installer Varnish sur Ubuntu ?

2voto

Steve Scheffler Points 1166

Je dirais que la première chose à faire est de commencer par mod_expires pour réduire les demandes de fichiers statiques, puis peut-être ajouter mod_deflate pour réduire la bande passante.

Seulement une fois que vous avez réellement voir Si vous avez une charge importante, commencez à partitionner sur des serveurs distincts.

Déplacer les requêtes statiques vers un serveur virtuel différent sur le même apache (utilisant probablement la même racine de document) devrait être un bon premier pas vers le partitionnement.

0voto

On dirait que personne n'a vraiment répondu à la vraie question.

Le fait qu'un serveur différent traite les demandes de fichiers statiques est très différent du traitement de toutes les demandes par le même proxy de mise en cache.

Le fait de disposer d'un serveur distinct pour les fichiers statiques permet aux clients de gérer davantage de téléchargements en parallèle.

Je suis également intéressé par une solution permettant de réaliser facilement cette opération dans TYPO3. Je n'aurais pas besoin du serveur statique sur une machine séparée. L'accès au système de fichiers n'est donc pas un problème pour moi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X