Я создаю приложение для iphone с помощью jqtouch, и я использую cachemanifest для кэширования всех статических файлов (изображения, css, javascript), чтобы оно загружалось быстрее. Однако страница использует php для динамического содержимого, и я не хочу это кэшировать. Поэтому я создаю кешманифест с помощью этого php-скрипта (manifest.php):
<?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";
?>
Это действительно хорошо работает, за исключением одной раздражающей вещи:
Из того, что я где-то прочитал, файл, который вызывает cachemanifest, автоматически включается в манифест и кэшируется. Это означает, что моя стартовая страница index.php, где я называю cachemanifest, кэшируется. Это приводит к очень раздражающим проблемам.
есть ли способ справиться с этим или любым умным обходным путем? Страница находится в манифесте кеша, указанном как NETWORK, но похоже, что это нарушается тем фактом, что кешманифест вызывается из файла.