私はjqtouchを使用してiphoneアプリを構築しており、cachemanifestを使用してすべての静的ファイル(画像、css、javascript)をキャッシュし、読み込みを高速化します。ただし、ページは動的コンテンツにphpを使用しているため、キャッシュしたくありません。だから私はこのphp-script(manifest.php)でcachemanifestを生成しています:
<?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";
?>
これは、1つの苛立たしいことを除いて、実際には非常にうまく機能します。
私がどこかで読んだものから、cachemanifestを呼び出すファイルは自動的にマニフェストに含まれ、キャッシュされています。Wichは、私がcachemanifestと呼んでいる私のスタートページindex.phpがキャッシュされていることを意味します。これは非常に苛立たしい問題につながります。
これまたはスマートな回避策に対処する方法はありますか?このページはネットワークとしてリストされているキャッシュマニフェストにありますが、ファイルからキャッシュマニフェストが呼び出されているため、これは無効になっているようです。