Caching van PHP-respons

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ward van der Put
Moderator

Ward van der Put

23/09/2013 15:45:13
Quote Anchor link
Voor een PHP-applet die een Ajax-respons genereert, wil ik caching door client of proxy inschakelen. De XML-output van het PHP-script verandert namelijk hooguit wekelijks. Is de volgende opzet goed of heb ik iets over het hoofd gezien?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
// HTTP-compressie met impliciete flush inschakelen
ob_start('ob_gzhandler');
ob_implicit_flush(true);

// Algemene HTTP-headers toevoegen
header('Content-Language: nl-NL');
header('Content-Type: text/plain; charset=UTF-8');

// HTTP-headers voor caching toevoegen
$expires = 7 * 24 * 60 * 60;
header('Pragma: public');
header('Cache-Control: maxage=' . $expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');

// Bestandsnaam van dit PHP-bestand
$filename = 'index.php';
// Datum en tijd van de laatste wijziging van dit bestand
$filemtime = filemtime($filename);

// HTTP-headers die door de client zijn verzonden
$headers = apache_request_headers();
// Controleren of de client zijn cache valideert
if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == $filemtime)) {
    // Cache van de client is up-to-date
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $filemtime) . ' GMT', true, 304);
    ob_end_flush();
    exit;
}
else {
    // Bestand is niet opgeslagen in de clientcache of de cache is verouderd
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $filemtime).' GMT', true, 200);
}

?>
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.