Refonte d'un site de locations : compte rendu technique

WRInaute occasionnel
Bonjour,

J'ai refait il y a quelques semaines mon site catalogue de locations de vacances (au passage pour tous ceux qui veulent s'y inscrire, c'est gratuit, photos illimitées, recherche cartographique, backlink, ...) et voici ici un résumé des choix technos fait pour vous faire découvrir des outils que vous ne connaissez pas peut être et partager ainsi mon expérience.

Tout d'abord le site c'est http://www.mapeo.fr/

Base de données :
J'ai une grosse expérience de postgresql que j'adore, c'est définitivement le SGBD qui roxe (!), mais pour ce simple projet web, je suis resté classique avec mysql 5 et evidemment des encodages utf8 (plus question pour moi de faire un projet en iso-8859-1, on s'en veut toujours après !).

Ensuite, le choix langage/framework :
Fan de programmation objet evidemment c'est PHP5 qui a été retenu, mais surtout il me fallait un framework MVC (model view controller).
En effet, quitte à recommencer un site, autant partir sur des bonnes bases...
Et puis quand on y a gouté, le MVC, c'est vraiment cool.
Et là, c'est Jelix (http://www.jelix.org/) qui a été retenu. Un framework vraiment super, full objet, léger, extensible, documenté et qui plus est, francophone.
Evidemment les sources sont en utf-8, les pages affichées aussi.

La technologie de recherche :
Comme vous l'avez vu sur l'accueil du site, une grosse fonctionnalité est la recherche cartographique (avec une recherche avancée en prime), et là, pas question d'interroger mysql qui en recherche full text n'est pas le top et consomme bcp de resources.
J'ai donc essayé deux technologies : Lucene (de Apache) et Xapian.
Lucene s'est averé moins rapide et plus consommateur de mémoire que Xapian.
Le stemming (le fait pour le moteur de recherche de savoir que recherche, recherchez et recherchons ont la même racine) en langue française marchait aussi mieux avec Xapian.
C'est donc Xapian (http://xapian.org/)

Interactivité :
C'est de l'AJAX avec des réponses en JSON plutôt que XML, je trouve que JSON est bien bien mieux adapté à l'AJAX (ou l'AJAJ devrais je alors dire).

Caching :
Avec un plugin, j'ai ajouté à Jelix une fonction de cache. mysql est ainsi peu sollicité.

Serveurs :
Classique pour toutes les pages web, c'est un apache2. PHP5 beneficie d'un cache d'opcode en la personne de eAccelerator.
Pour toutes les images (qui sont servies sur le port 81) c'est un petit serveur super léger et aux perfs encore meilleures que lighttpd et thttpd : Cherokee (http://www.cherokee-project.com/). En effet, inutile de consommer un slot apache qui est un serveur lourd pour servir une image !

Voilà je crois que j'ai tout dit ! Evidemment si vous avez des questions sur Jelix ou Xapian ou autre, n'hésitez pas.

Si vous avez une location de vacances, n'hésitez pas non plus, inscrivez vous vite !

L.
 
WRInaute passionné
Hello,

là comme ça j'ai un peu peur pour le port 81 : ça risque de coincer avec beaucoup de personnes surfant depuis leur entreprise, et vue le contenu c'est une bonne partie de la cible non ?

Pour ma part j'aurais sois opté pour un reverse proxy qui aurait dispatché (et ainsi gérer le keepalive qu'Apache gère si mal) ou bien utilisé le port 80 d'une autre adresse IP.

Coté moteur de recherche, bien que ne supportant pas le "fulltext" de MySQL je ne m'étais pas encore penché sur le problème. Merci donc pour ton petit retour d'expérience, ça pourra toujours être utile.

Pour le reste, bah... ce sont des techniques très à la mode oui ;)
 
WRInaute occasionnel
Merci pour cette remarque que je prends en compte tt de suite, je vais déplacer cela sur le port 80 d'une autre adresse IP !
 
WRInaute discret
Salut,
j'ai aussi un site de loc de v4cances bien qu'il n'y ai que la partie maroc qui m'interesse j'ai trouvé ton concept bien cool et plutot que d'inscrire mes apparts pourquoi ne pas faire un echange de lien!!??
-http://locationmarrakech.unblog.fr
 
WRInaute occasionnel
Concrètement tu fait comment pour que les images soient servies sur une autre ip ? htacess ? c'est vraiment efficace puisque apache fait quand même la redirection ...
 
WRInaute passionné
Ron56 : elles sont sur un sous domaine différent (images.mapeo.fr).

Par exemple sur cette page je vois :
Code:
http://images.mapeo.fr:81/thumbs/34/2334-1160144863.jpg
http://images.mapeo.fr:81/thumbs/34/2334-1198622127.jpg
http://images.mapeo.fr:81/thumbs/34/2334-1198622260.jpg
http://images.mapeo.fr:81/thumbs/34/2334-1198622312.jpg
http://images.mapeo.fr:81/thumbs/34/2334-1198622386.jpg
http://images.mapeo.fr:81/thumbs/34/2334-1198622560.jpg
http://images.mapeo.fr:81/thumbs/80/4680-1173445657.jpg
http://images.mapeo.fr:81/thumbs/81/4681-1173451487.jpg

Si "images" pointe sur une IP différente, il suffit de faire écouter l'autre serveur sur cette IP uniquement (et Apache sur l'autre).
Idem pour les ports si besoin : Apache sur l'un et Cherokee sur l'autre.

L'autre solution étant l'utilisation d'un reverse-proxy, mais avec un plus ou moins léger surcoût.
 
Discussions similaires
Haut