Mon site est rĂ©guliĂšrement sujet Ă des ralentissements. Câest pas nouveau mais câest un peu chiant.
Je ne sais toujours pas si ça vient de moi (mon site) ou un autre, car je suis en mutualisĂ©. Jâessaie tout de mĂȘme dâoptimiser un peu.
Une des pages les plus vue de mon site, câest la page du Gravatar local.
Dans les commentaires, plutĂŽt que votre navigateur accĂšde Ă Gravatar (service externe), il demande Ă mon serveur dâaller chercher sur Gravatar. Ensuite, le serveur stocke lâimage rĂ©cupĂ©rĂ©e pour la prochaine fois.
Ă chaque fois que les commentaires sâaffichent, une requĂȘte est faite sur le fichier /favatar.php, avec en paramĂštres le hash de lâimage Ă rĂ©cupĂ©rer.
Câest bien un script PHP qui est lancĂ©e Ă chaque fois. Si le fichier du hash existe sur le serveur, il le read() et lâenvoi. Sinon, il le rĂ©cupĂšre, le sauvegarde et lâenvoie.
Je viens de trouver une autre méthode.
PlutĂŽt que de faire une requĂȘte sur le fichier /favatar.php, je fais une requĂȘte sur lâimage directement : /cache/gravatar/hash.png.
LĂ , si le fichier existe, le serveur lâenvoie et ça sâarrĂȘte lĂ . Pas de PHP Ă lancer.
Si le fichier nâexiste pas, en revanche, ça devrait envoyer un 404. Sauf que jâutilise un .htaccess pour rediriger sur le /favatar.php et rĂ©cupĂ©rer lâimage.
Câest bien mieux : dans la grande majoritĂ© des cas, la requĂȘtes est dĂ©sormais une simple image sur le disque, plus un fichier PHP Ă lancer, qui va regarder si le fichier existe, qui va le lire, et lâenvoyer au navigateur.
Jâaurais dĂ» faire ça depuis le dĂ©but, je sais, je sais, mais on va voir si ça aide.
~
Pour mettre ça en place, faire directement la requĂȘte sur /dossier/fichier.png
Dans /dossier/, mettre un .htaccess avec le code suivant :
# If requested resource doesn't exists as a file redirects to the PHP script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) relative/path/to/script.php?q=$1 [L]
La premiĂšre ligne est la condition nĂ©cessaire Ă lâapplication de la seconde. Elle teste « le fichier demandĂ© nâest pas un fichier sur le disque (!-f) ». Si le fichier est absent, il renvoie "true" et exĂ©cute la ligne suivante, Ă savoir une réécriture (pas redirection) vers script.php, avec comme paramĂštre "q", le $1 qui contient le nom du fichier demandĂ© (on peut y rajouter dâautres paramĂštres si besoin :
RewriteRule (.*) relative/path/to/script.php?s=search&format=png&q=$1 [L]
[/code]
Ensuite dans script.php, on fait ce quâon a Ă faire avec les paramĂštres (wget sur le fichier, imagemagic pour crĂ©er une image, etc., puis on read() le fichier, pour Ă©viter une redirection et une autre requĂȘte :
// send file to browser
header('Content-Type: image/png');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($target_file)).' GMT');
header('Content-Length: ' . filesize($target_file));
header('Cache-Control: public, max-age=2628000');
readfile($target_file);
exit;
~
Sinon, en aparté : jâai modifiĂ© le thĂšme pour https://couleur-science.eu/ . Le thĂšme est dĂ©sormais clair ou sombre en fonction du paramĂ©trage de votre navigateur.
â (
permalink)