Je travaille sur un site Web qui utilise /news/title-of-news-article--111.html (111 = identifiant unique de l'article d'actualité). Je pensais que ce serait une bonne idée d’avoir un système de cache pour les articles de presse.
Mon idée serait essentiellement de créer une version .html de l'article d'actualité (c'est-à-dire uniquement la partie d'actualité générée dynamiquement) lorsqu'il serait marqué en direct (ce qui permettrait aux visiteurs et aux moteurs de recherche de le voir). Le script .php qui affiche le contenu vérifiera si un fichier .html avec l'ID de news existe et l'utilisera au lieu d'interroger la base de données. Bien entendu, si le fichier .html n'existait pas pour une raison quelconque, il en résulterait une interrogation de la base de données, comme le fait actuellement le site.
Avez-vous des problèmes avec cette approche? C’est plus important quand beaucoup de visiteurs consultent un article de presse, car idéalement, je suppose que saisir un fichier "statique" .html est préférable pour le serveur et la base de données que pour l’interrogation.
Cela semble bien, mais pourquoi mettre un identifiant numérique dans le nom du fichier? L'utilisateur n'a pas besoin de voir ça. Cela encombre l'URL.
En outre, il existe peut-être d'autres solutions que vous pourriez explorer. Par exemple, les bases de données telles que MySQL ont un cache de requête qui met en cache les requêtes fréquentes au lieu d’exécuter la requête encore et encore. Cette option est activée par défaut, mais vous souhaiterez peut-être optimiser la taille du cache pour votre serveur. Et si vous utilisez Memcached , le serveur de base de données n'aura même pas besoin d'être connecté car les données seront mises en cache dans la mémoire locale.
Sur une note séparée, assurez-vous que votre serveur Web utilise FastCGI. Passer de CGI à FastCGI peut littéralement réduire le temps de réponse de votre serveur de plus de 50%, ce qui rend votre script PHP aussi rapide que le chargement d'un fichier à plat. N'importe quel hébergeur Web compétent devrait déjà l'utiliser, mais si vous ne l'êtes pas, alors ce serait la priorité numéro un pour moi. Vous pouvez également utiliser APC, qui met en cache vos scripts PHP sous forme de code octet et accélère encore le temps de réponse.
Je pense que la mise en cache sur des fichiers html plats est toujours une bonne solution pour réduire la charge du serveur, mais soyez conscient de ces autres optimisations, car elles peuvent également faire toute la différence.