我正在使用 jqtouch 构建一个 iphone 应用程序,并且我使用缓存清单来缓存所有静态文件(图像、css、javascript)以使其加载更快。但是该页面使用 php 作为动态内容,我不想缓存它。所以我用这个 php-script(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";
?>
这实际上非常有效,除了一件令人讨厌的事情:
从我在某处读到的内容中,调用缓存清单的文件会自动包含在清单中并且正在缓存中。这意味着我的起始页 index.php,我称之为缓存清单的地方正在缓存。这会导致非常恼人的问题。
有什么办法可以解决这个问题或任何聪明的解决方法吗?该页面在列为 NETWORK 的缓存清单中,但看起来这被从文件中调用缓存清单的事实推翻了。