Je construis une application iphone avec jqtouch et j'utilise un cachemanifest pour mettre en cache tous les fichiers statiques (images, css, javascript) afin de les charger plus rapidement. Cependant, la page utilise php pour le contenu dynamique et je ne veux pas le mettre en cache. Je suis donc générer le cachemanifest avec ce script php (manifest.php):Comment ne pas mettre en cache un fichier php lorsqu'un cache-événement est appelé?
<?php
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST\n";
$hashes = "";
$lastFileWasDynamic = FALSE;
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file) {
if ($file->IsFile() && $file != "./manifest.php" &&
substr($file->getFilename(), 0, 1) != ".") {
if(preg_match('/.php$/', $file)) {
if(!$lastFileWasDynamic) {
echo "\n\nNETWORK:\n";
}
$lastFileWasDynamic = TRUE;
} else {
if($lastFileWasDynamic) {
echo "\n\nCACHE:\n";
$lastFileWasDynamic = FALSE;
}
}
echo $file . "\n";
$hashes .= md5_file($file);
}
}
echo "\nNETWORK:\nhttp://chart.apis.google.com/\n\n# Hash: " . md5($hashes) . "\n";
?>
Cela fonctionne vraiment bien fait, sauf pour une chose irritante:
D'après ce que je l'ai lu quelque part le fichier qui appelle la cachemanifest est automatiquement inclus dans le manifeste et est en cache. Ce qui veut dire que ma page d'accueil index.php, où j'appelle le cachemanifest, est en cache. Cela conduit à des problèmes très irritants.
est-il un moyen de faire face à cette solution de contournement ou une solution de contournement intelligente? La page est dans le cache-list répertorié comme NETWORK, mais il semble que cela soit annulé par le fait que le cachemanifest est appelé à partir du fichier.
sonne comme une façon intelligente de le faire! va l'essayer et faire un rapport ici .. – Volmar