Base de Données ou Statique

Pendant longtemps, nous avons vécu dans un monde où nous utilisons des approches par défaut sans vraiment réfléchir à leur objectif. Prenons WordPress comme exemple : c'est une application puissante, mais elle nécessite MySQL comme base de données, et pour la rendre rapide, vous avez souvent besoin de Memcache pour mettre en cache les requêtes MySQL et réduire la charge sur la base de données. À côté, il y a l'éditeur WYSIWYG qui, en théorie, permet aux utilisateurs d'éditer facilement le HTML, mais qui, en pratique, génère souvent un code illisible et encombrant.

Mais la question fondamentale est : pourquoi faisons-nous cela ? Nous installons WordPress, MySQL et Memcache pour générer essentiellement des pages "statiques" car WordPress peut être lent, et les mises à jour de contenu sont rares. Pour chaque page générée :

  • Un site WordPress basique effectue 10 à 30 requêtes.
  • Un site modérément complexe avec quelques plugins et un thème populaire : 30 à 60 requêtes.
  • Un site très complexe avec de nombreux plugins et des thèmes lourds peut effectuer 60 à 100+ requêtes.

Même un simple billet de blog peut nécessiter entre 10 et 100+ requêtes, ce qui explique pourquoi les sites WordPress peuvent être lents.

Pourquoi Restons-nous avec WordPress ?

La grande question demeure : Pourquoi utilisons-nous un système aussi compliqué ? Historiquement, l'utilisation d'une base de données relationnelle comme MySQL pour un blog avait du sens car les gens pouvaient laisser des commentaires, et les bases de données offraient un moyen rapide de stocker et de récupérer ces informations. Mais aujourd'hui, peu de sites WordPress ont les commentaires activés à cause du spam incessant qui les accompagne souvent. En conséquence, la plupart des sites s'appuient sur des solutions tierces comme Disqus ou Facebook Comments pour gérer les commentaires des utilisateurs. Ces services prennent en charge la vérification des utilisateurs et le filtrage du spam, ce qui signifie que nous n'avons plus besoin de la base de données pour fournir du contenu dynamique sous forme de commentaires.

Une Approche Statique

Chez True, nous avons opté pour une approche entièrement statique. Nous utilisons des fichiers statiques comme notre "base de données" :

  • blog.php gère les pages de blog.
  • support.php gère les pages de support (historiquement différentes mais maintenant similaires en format).
  • categories.php gère la liste des catégories dans le menu supérieur et la barre latérale.

Nous stockons l'ensemble de la base de données du blog sous forme de simples fichiers PHP ou JSON, ce qui est efficace car nous utilisons PHP pour faire fonctionner notre site.

Voici comment cela fonctionne :

database blog

storage

Chaque entrée de blog est stockée sous forme de dossier contenant un fichier markdown (_.md) et des ressources associées comme des images et des pièces jointes.

storage fodler

Nous avons également deux dossiers supplémentaires pour :

  • Traduire : Stocke les traductions des fichiers markdown dans différents paramètres régionaux (par exemple, es_ES, de_DE).
  • HTML : Contient les fichiers HTML générés à partir du markdown, qui sont régénérés à chaque déploiement.

La magie opère pendant le processus de déploiement. Nous utilisons Composer pour déclencher la transformation du markdown en HTML via des scripts :

"scripts": {
    "post-install-cmd": [
        "php bin/markdown-to-html.php"
    ],
    "post-update-cmd": [
        "php bin/markdown-to-html.php"
    ]
}

Le meilleur outil que nous avons trouvé pour la transformation du markdown est league/commonmark, qui apporte des plugins utiles, y compris la prise en charge des tableaux et des chemins CDN personnalisés pour nos images.

Déploiement

Nous utilisons un processus de déploiement basé sur GitHub Actions et Deployer, qui a été facile à intégrer. Voici un exemple de script :

name: Deploy
on:
  push:
    branches: [ "main" ]
concurrency: production_environment
jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"

      - name: Deploy
        uses: deployphp/action@v1
        with:
          private-key: ${{ secrets.PRIVATE_KEY }}
          dep: deploy
          verbosity: -vvv

Le processus est simple : chaque fois que quelqu'un fait un commit sur la branche “main”, le déploiement se fait automatiquement. Les actions durant le déploiement incluent :

  1. Copier les images dans le dossier public/img.
  2. Générer une carte de hachage pour toutes les images et pièces jointes.
  3. Générer HTML à partir des fichiers markdown en : • Corrigeant les chemins des images (par ex. de /img/blog/... à cdn.truesocialmetrics.com/img/blog/...). • Mettre à jour les chemins CDN si nécessaire.

Pendant la génération HTML, les présentations, en-têtes et menus sont également ajoutés. C'est ainsi que nous servons des fichiers statiques qui peuvent sembler dynamiques pour les utilisateurs.

Avantages D'une Approche Statique

Performance

Les sites statiques sont incroyablement rapides, avec des temps de chargement de page aussi bas que 3-5 ms.

Simplicité

Enseigner à notre équipe de support à utiliser Markdown est beaucoup plus facile que de les former à naviguer dans un CMS complexe comme WordPress.

Code Propre

En contrôlant le processus de transformation du markdown en HTML, nous garantissons que le HTML résultant est propre et optimisé pour les moteurs de recherche (bonjour, Google !) et les fonctionnalités comme la “Vue Lecteur” dans les navigateurs.

Maintenabilité

Puisque nous utilisons des fichiers statiques et Git pour le contrôle de version, chaque changement est suivi automatiquement, jusqu'à chaque ligne. Les pièces jointes comme les images bénéficient également du contrôle de version, ce qui permet de savoir qui a fait une modification et pourquoi. Cela rend la recherche et la modification de contenu efficaces, en utilisant des outils comme grep et ack.

Accessibilité Pour l'Équipe

Notre équipe trouve la structure statique facile à utiliser, surtout avec des outils comme GitHub Desktop et Typora, un éditeur markdown beau et simple.

Conclusion

En essence, nous nous sommes éloignés de l'approche traditionnelle basée sur les bases de données qui domine les plateformes comme WordPress. En utilisant un système statique, nous avons non seulement amélioré la performance mais aussi simplifié la maintenance, la création de contenu et la collaboration en équipe.



Lorsque vous êtes prêt à faire vibrer vos analyses de médias sociaux

essayez TrueSocialMetrics!


Commencer procès
Pas de carte de crédit nécessaire.






continuer la lecture




Films sur Facebook : des moyens créatifs de promouvoir les sorties de DVD
L'objectif principal des pages Facebook pour les films est de promouvoir leur sortie en salle et d'augmenter les ventes de billets. Mais lorsque le spectacle est terminé, le travail se poursuit pour une deuxième vague à venir - les sorties sur disque. J'étais curieux de savoir quelles techniques de contenu créatif les studios de cinéma utilisent pour promouvoir leurs sorties sur disque. J'ai donc regardé les meilleurs films de 2014 et utilisé la fonction de segmentation de contenu pour l'analyser.


Communautés Google+ : analyse de la santé de la communauté
Si vous êtes propriétaire d'une communauté ou si vous évaluez simplement dans quelle communauté participer ou représenter votre marque, c'est une bonne chose d'étudier la santé d'une communauté et de voir ce qui se passe derrière le simple nombre d'abonnés. Comparons les 5 meilleures communautés de marketing des médias sociaux sur G+.


Trois choses que tout le monde devrait savoir sur l'analytique
Votre site, votre page de médias sociaux ou votre marque sont comme une pièce sombre - vous n'avez aucune idée de ce qui s'y passe, de la façon dont les clients interagissent avec votre produit, de ce qu'ils pensent de votre contenu, etc. Autrement dit, jusqu'à ce que vous allumiez la lampe de poche de l'analyse. Soudain, vous pouvez voir que les clients ont détesté vos publications sur le super bowl et vos proverbes inspirants, mais ont totalement adoré vos vidéos idiotes sur les chats ; qu'ils ont eu des problèmes pour s'abonner à votre newsletter sur un site et qu'ils ne savent pas comment naviguer dans la page de tarification.


Déploiement de Pinterest Analytics pour tout le monde
Grande nouvelle, tout le monde! Nous apportons beaucoup de changements ce mois-ci. Dans 30 jours :
  • Nous passons à la nouvelle API Pinterest.
  • Pinterest sera disponible pour tout le monde, pour tous les plans.
  • Les communautés Google+ et l'analyse Vine seront interrompues.
  • Les forfaits Premium seront interrompus (forfaits incluant les communautés Pinterest/Vine/Google+).