Cette page étudie comment différents logiciels libres peuvent interagir pour améliorer l'expérience utilisateur du portail. (ça reste très flou, n'est-ce pas ?)
Un site internet dynamique comprend généralement 2 parties:
Pour la partie publique, on a plusieurs contraintes:
Ces 2 types de visiteurs sont contradictoires!
Un site qui sera optimisé pour les humains, sera difficilement référencé par les moteurs de recherche(SEO: Search Engine Optimization).
Par contre, la partie privée ne doit pas être visible aux moteurs de recherche. Il est donc possible d'utiliser AJAX au maximum pour améliorer l'expérience utilisateur. La contrainte est d'établir une bonne base sécurisée, car les échanges entre le serveur et le client deviennent nombreux.
Si on regarde les différents logiciels retenus:
WordPress peut servir de noyau de CMS. Par contre, son module de gestion de media est très limité. Et il lui manque un module de cache intégré.
Dokuwiki a le très grand avantage de ne pas utiliser de base de données. Il peur donc facilement s'intégrer avec un autre logiciel. Il possède un cache assez puissant.
Gallery2 est un logiciel très complexe et aussi très puissant. Il peut sembler vraiment difficile de l'intégrer avec un autre logiciel.
Un CMS peut sembler séduisant car il réduit considérablement la charge de travail pour gérer le contenu. On l'associe souvent à l'utilisation d'une base de données.
En fait, même si un site internet peut être dynamique, dès qu'on prend en considération la montée en charge pour de nombreux visiteurs, l'utilisation d'un cache devient incontournable.
Un cache revient à déterminer une période -même très courte- pendant laquelle le site sera stable et aura le même contenu… statique! Dans le cas de période de pointes, avec par exemple plusieurs dizaines/centaines de visiteurs par seçonde, cette période de cache peut être réduite à 1 seçonde et demeurer utile, voire indispensable!
On voit déjà pointer la nécéssité de régler la durée du cahce suivant des règles (période de la journée, nombre de visiteurs détectés, etc…)
Quand un site est dynamique avec PHP, cela revient à garder en mémoire les pages HTML résulats dans des fichiers et à les servir tels quels à la prochaine requête identique. On évite ainsi toute la consommation de ressources serveur pour PHP et MySQL. Le temps de réponse est aussi beaucoup plus rapide.
Au final, on se retrouve à éviter d'utiliser la base de données!
DokuWiki trouve donc une très bonne justification de son architecture: Pas de Base De Données. Car le gain est assez minime.
Le fichier est le composant de base en informatique. Il est donc universellement reconnu quelque soit le système du serveur. Cet aspect est très pratique lorsqu'on veut mettre en place facilement un système redondant: il suffit de copier les fichiers. Avec une Base De Données, le problème devient un peu plus complexe. Et le volume des données ou bien le gain final ne justifient pas forcément cette utilisation d'une BDD.
Il faut étudier chaque logiciel pour comprendre:
Pour WordPress, il y a le plugin WP-Cache. Le code source de WordPress contient des instructions particulières pour intégrer ce plugin.
On peut regarder des modules comme eAccelerator pour intégrer un cache au niveau du serveur Apache.
L'utilisation de Javascript pose un problème non négligeable: Google ne tient pas compte du résultat de la page après exécution du code… car Google n'exécute pas le code JavaScript!!!
Pour être convaincu, il suffit d'insérer une balise noscript au début de la page: Google référencera la page avec le message noscript.
Une méthode serait de détecter le moteur de recherche au niveau du serveur et d'envoyer une page différente suivant le type de client. Mais si on part sur ce type de différentiation, c'est un peu tricher avec les moteurs de recherche. Pourquoi ne pas complètement faire un site différent pour le moteur et un autre pour les visiteurs ?
Pour garder un seul site, il faut alors bien laisser dans le code HTML le contenu essentiel: les titres, le texte, les liens vers les autres pages. L'utilisation des balises h1, h2, … <p> permet de hiérarchiser la structure de la page sans s'engager sur une contrainte esthétique puisque le CSS permet de personnaliser complètement le rendu de la page.
Pour tout ce qui est accès vers des liens d'administration, on peut utiliser le javascript pour insérer le code après le chargement de la page.
Par exemple, le formulaire de commentaires peut se créer dynamiquement. Ce qui peut limiter le spam.