Как создать автономное веб-приложение, чтобы при посещении пользователем hxxp://mywebsite/ в автономном режиме отображалось hxxp://mywebsite/offline/. [На моем веб-сайте около 100 различных динамических страниц, поэтому я не могу позволить себе жестко закодировать их все в файле манифеста кеша]
Использование подстановочного знака в разделе FALLBACK файла манифеста кэша HTML5
Ответы (4)
CACHE MANIFEST
CACHE:
/Offline/OfflineIndex.html
FALLBACK:
/ /Offline/OfflineIndex.html
NETWORK:
*
Это приведет к тому, что все ваши страницы по всему сайту будут перенаправляться в автономный режим, когда они не в сети. Единственная проблема связана со страницей, которая объявляет манифест, поскольку эта страница всегда кэшируется. Это означает, что вы не можете объявить манифест на каждой странице, потому что каждая посещенная страница будет сама кэшироваться, а не перенаправляться. Итак, что вы можете сделать, это объявить свой манифест в другом html-файле (IE. Synchronize.html), а затем по умолчанию проверить, было ли ваше приложение доступно для автономного режима, сохранив значение cookie или localcache. Если нет перенаправления на synchronize.html с объявленным манифестом, установите значение localcache и перенаправьте обратно на index.
ОФЛАЙН УДИВИТЕЛЬНОСТЬSSSSSSSSSS!!!!
Я ссылаюсь на «manifest.php» вместо «cache.manifest», тогда мой файл php выглядит так:
<?php
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST\n";
$hashes = "";
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file) {
$info = pathinfo($file);
if ($file->IsFile() &&
$file != "./manifest.php" &&
substr($file->getFilename(), 0, 1) != ".")
{
echo $file . "\n";
$hashes .= md5_file($file);
}
}
echo "# Hash: " . md5($hashes) . "\n";
?>
Хэши файлов поддерживают его в актуальном состоянии, поэтому, если какие-либо файлы изменяются, манифест также изменяется. Надеюсь, это поможет :)
Невозможно использовать подстановочные знаки в манифесте кеша, по крайней мере, насколько мне известно, это не работает ни в одном текущем браузере. Альтернативным подходом может быть динамическое создание манифеста кеша и предоставление сценарию возможности генерировать все эти резервные записи.
Ссылка на файл манифеста в невидимом iframe на странице индекса. Таким образом, ваша индексная страница не кэшируется, как обычно по умолчанию, и у вас есть полный контроль над резервными копиями...
Нет необходимости в ненадежных файлах cookie или localStorage!