auto_cache_manifest.php

Gesponsorde koppelingen

PHP script bestanden

  1. auto_cache_manifest.php
  2. cache_manifest.js

« Lees de omschrijving en reacties

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
function cache_manifest($f, $u, $ignore = false){
    if(!count($f) == count($u) && is_array($f) && is_array($u)){
        global $_cache_error;
        $_cache_error = "ERROR: De opgegeven array's zijn niet gelijk!<br />";
    }

    
    // verplichte eerste regel
    $manifest = 'CACHE MANIFEST' . PHP_EOL;
    $error = false;
    for($i = 0; $i < count($f); $i ++){
        if(is_file($f[$i])){
            // voeg bestandsnaam toe met een enter aan het einde
            // voeg daarna de md5-waarde van het bestand toe in commentaar (de # geeft commentaar aan), waarom?
            // een browser zal pas opnieuw gaan cachen als het manifest, dit dus, veranderd is.
            // het maakt niet uit of het bestand veranderd is.
            // Als het bestand nu veranderd is, is de hash anders, dus de manifest is anders, dus het word opnieuw gecached.

            $manifest .= $u[$i] . PHP_EOL;
            $manifest .= "#" . md5_file($f[$i]) . PHP_EOL;
        }
elseif(!$ignore){
            // bestandsnaam in de array bewaren
            $error .= $f[$i] . "<br />";
        }
    }

    
    if($error){
        // Er is een fout opgetreden, sla deze op in een globale variabele zodat deze later gelezen kan worden voor debug-doeleinden
        global $_cache_error;
        $_cache_error = "ERROR: De volgende bestanden bestaan niet!<br />(Om dit te onderdrukken kan je de 'ignore' parameter zetten)<br /><br />" . $error;
        return false;
    }

    
    return $manifest;
}


/*
wat je hier NIET in moet zetten;
    dynamische pagina's die veel veranderen.
    pagina's die per se internet nodig hebben, b.v. login.php.
    bestanden die niet bestaan, ik weet niet hoe een browser hier op reageerd maar het kan niet handig zijn.
    erg grote pagina's, de cache mag max 5MB zijn, das genoeg ruimte maar ga nou niet je online mp3 verzameling hierin zetten.

wat wel?
    javascript bestanden,
    afbeeldingen,
    informatie paginas,
    enz,
*/

// misschien wil je liever een readdir() functie gebruiken, het maakt niet uit zolang je maar een array krijgt gevuld met bestandsnamen (inclusief path!)

$files = array(
    "images/afbeelding.jpg",
    "javascript/script.js",
    "files/pagina.html",
);


$uri = array(
    "http://www.site.com/images/afbeelding.jpg",
    "http://www.site.com/javascript/script.js",
    "http://www.site.com/pagina/",
);


if($manifest = cache_manifest($files, $uri)){
    // mooi, niks fout gegaan,
    // een cache manifest moet deze header hebben, alleen zetten als alles goed gegaan is.

    header("Content-Type: text/cache-manifest");
    echo $manifest;
}
else {
    // Een (of meer) van de bestanden bestaat niet, laat de foutmelding zien zodat we (en ik bedoel 'jij') kunnen debuggen
    echo $_cache_error;
}

 
 

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.