web-dev-qa-db-fra.com

Le programme d'installation HTTP expire les en-têtes à l'aide de PHP et Apache

Comment puis-je configurer les en-têtes Expires dans PHP + Apache? J'utilise actuellement auto_prepend pour gérer les ressources compressées, mais j'aimerais également optimiser le cache HTTP.

Comment puis-je les configurer?

51
Tom

Il y a deux façons de faire ça. La première consiste à spécifier l'en-tête dans votre code php. C'est très bien si vous voulez ajuster par programme le délai d'expiration. Par exemple, un wiki peut définir un délai d'expiration plus long pour une page qui n'est pas modifiée très souvent. 

header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour

Votre deuxième choix consiste à créer un fichier .htaccess ou à modifier votre config httpd. Dans un environnement d'hébergement partagé, la modification de votre fichier .htaccess est assez courante. Pour ce faire, vous devez savoir si votre serveur prend en charge mod_expires, mod_headers ou les deux. La méthode la plus simple consiste simplement en essais et erreurs, mais certains serveurs Apache sont configurés pour vous permettre d'afficher ces informations via la page/server-info. Si votre serveur comporte à la fois mod_expires et mod_headers et que vous souhaitez définir l'expiration des ressources statiques, essayez de le placer dans votre fichier .htaccess:

# Turn on Expires and set default to 0
ExpiresActive On
ExpiresDefault A0

# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
Header append Cache-Control "public"
</FilesMatch>

Pour d'autres combinaisons et d'autres exemples, voir: http://www.askapache.com/htaccess/speed-up-your-site-with-caching-and-cache-control.html

110
brianegge

Ce module Apache pourrait être utile: http://httpd.Apache.org/docs/2.0/mod/mod_expires.html

2
middus

Avez-vous essayé quelque chose comme?

<?php
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
0
acemtp