Exemple : en-têtes Expires dans les scripts

Ce script CGI Perl indique comment utiliser l'en-tête Expires dans les scripts à des fins de démonstration.

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Util;
use Date::Parse;

my $q = new CGI;

print $q->header(-type => "text/html", -status => 200, -expires => "+60s");

print "<html><body>\n<h1>Expires Test</h1>\n" .
        "<p>Date: ".scalar localtime()."</p>\n" .
        "<table>\n";
foreach my $var (sort keys %ENV)
{
        next unless $var =~ /^HTTP_/;
        print "<tr><td>$var</td><td>$ENV{$var}</td></tr>\n";
}
print "</table></body></html>\n";

exit 0;

Lorsque vous chargez le script sur un serveur Web CGI, une réponse similaire à celle-ci s'affiche :

Expires Test

Date: Fri Aug 3 17:02:08 2007

HTTP_ACCEPT text/xml,application/xml,application/xhtml+xml,...
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING gzip,deflate
HTTP_ACCEPT_LANGUAGE en-us,en;q=0.5
HTTP_CACHE_CONTROL max-age=0
HTTP_CONNECTION keep-alive
HTTP_COOKIE 200
HTTP_HOST localhost
HTTP_KEEP_ALIVE 300
HTTP_USER_AGENT Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20060601 Firefox/2.0.0.5 (Ubuntu-edgy)

Le script envoie une réponse contenant un en-tête Expires défini sur 60 secondes plus tard et utilise la fonctionnalité intégrée du module CGI pour calculer une date HTTP à partir de la chaîne « +60s », laquelle signifie « maintenant plus 60 secondes ».

Une fois le script chargé, lorsque vous spécifiez le point d'insertion dans la barre d'adresse et que vous appuyez sur Entrée pour charger la page à nouveau, aucune requête n'est envoyée et la Date reste inchangée pendant 60 secondes. Toutefois, si vous appuyez sur le bouton Actualiser ou Recharger de votre navigateur, la page est de nouveau chargée.

La page expire dans le cache au bout de 60 secondes ou est rechargée manuellement. Ces deux méthodes permettent d'envoyer une nouvelle requête et de redéfinir la date.