web-dev-qa-db-fra.com

Difficulté à activer la mise en cache sur un site hérité

On m'a demandé de travailler sur un site Web d'entreprise créé par un ancien employé. Le site est sur l'hébergement GoDaddy partagé. L'une des premières choses que j'ai remarquées (après le fichier JPEG de 140 Ko sur la page de couverture, maintenant 22 Ko en l'absence de dégradation notable), c'est qu'aucune des pages HTML servies n'a été mise en cache. Il s'avère que tous les fichiers PHP de ce site Web envoient les en-têtes suivants:

Pragma: no-cache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

La date d’échéance de 1981 est notable car c’est un jour/une heure impaire pour choisir arbitrairement. Cela n'affecte pas les autres types MIME, juste text/html (tous générés par PHP). Comme le serveur est en cours d'exécution PHP 5.2, il n'y a pas de fonction header_remove (). J'ai essayé de les remplacer dans PHP en utilisant des valeurs vides:

header("Pragma: ");
header("Expires: ");
header("Cache-Control: ");

Cela n'a pas fonctionné. J'ai donc essayé de les supprimer via .htaccess:

<FilesMatch "\.php$">
  Header unset Pragma
  Header unset Expires
  Header unset Cache-Control
</FilesMatch>

Cela a également échoué. Je commence à suspecter une mauvaise configuration d'hébergement partagée par GoDaddy que je ne pourrai pas résoudre: - /

Quelqu'un a-t-il déjà vu cela ou eu d'autres idées que je peux essayer?

3
Nicholas Shanks

Vous avez raison, la date est là pour empêcher la mise en cache. La date spécifique est juste un petit détail stupide , cependant.

Vous semblez avoir raison de ne pas autoriser ou ignorer certaines de ces options dans GoDaddy, bien qu'apparemment il puisse être géré via l'une des méthodes suivantes: l'attaquer; semble étrangement conditionnel, cependant. Voici un article de la base de connaissances sur l'activation de mod_expires , qui est apparemment désactivé par défaut. Étant donné que c'est la documentation officielle, c'est probablement votre meilleur pari.

Cet article de blog (à partir de 2010) a quelques autres solutions que vous pouvez essayer si cela ne fonctionne toujours pas.

1
Su'