Использование подстановочного знака в разделе FALLBACK файла манифеста кэша HTML5

Как создать автономное веб-приложение, чтобы при посещении пользователем hxxp://mywebsite/ в автономном режиме отображалось hxxp://mywebsite/offline/. [На моем веб-сайте около 100 различных динамических страниц, поэтому я не могу позволить себе жестко закодировать их все в файле манифеста кеша]


person ashishb    schedule 16.09.2010    source источник


Ответы (4)


CACHE MANIFEST
CACHE:
/Offline/OfflineIndex.html

FALLBACK:
/ /Offline/OfflineIndex.html

NETWORK:
*

Это приведет к тому, что все ваши страницы по всему сайту будут перенаправляться в автономный режим, когда они не в сети. Единственная проблема связана со страницей, которая объявляет манифест, поскольку эта страница всегда кэшируется. Это означает, что вы не можете объявить манифест на каждой странице, потому что каждая посещенная страница будет сама кэшироваться, а не перенаправляться. Итак, что вы можете сделать, это объявить свой манифест в другом html-файле (IE. Synchronize.html), а затем по умолчанию проверить, было ли ваше приложение доступно для автономного режима, сохранив значение cookie или localcache. Если нет перенаправления на synchronize.html с объявленным манифестом, установите значение localcache и перенаправьте обратно на index.

ОФЛАЙН УДИВИТЕЛЬНОСТЬSSSSSSSSSS!!!!

person Fanie Oosthuysen    schedule 25.11.2010
comment
Это не совсем то, что я ищу, но все же это хороший ответ для других, чтобы прочитать, чтобы лучше понять автономный HTML5. - person ashishb; 29.11.2010
comment
Кэширование манифеста — это то, что бросило меня в петлю. Хотя это очень помогло в прояснении. Благодарность - person drogon; 17.05.2012

Я ссылаюсь на «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";

?>

Хэши файлов поддерживают его в актуальном состоянии, поэтому, если какие-либо файлы изменяются, манифест также изменяется. Надеюсь, это поможет :)

person ggutenberg    schedule 16.09.2010
comment
но как мне создать записи FALLBACK? - person ashishb; 20.09.2010
comment
Вам просто нужно было бы встроить в этот сценарий некоторую логику, чтобы перечислять файлы FALLBACK (на основе пути, имени файла и т. д.) отдельно. Зациклить один раз, исключить файлы FALLBACK. Снова повторите цикл, включив только файлы FALLBACK. - person ggutenberg; 20.09.2010

Невозможно использовать подстановочные знаки в манифесте кеша, по крайней мере, насколько мне известно, это не работает ни в одном текущем браузере. Альтернативным подходом может быть динамическое создание манифеста кеша и предоставление сценарию возможности генерировать все эти резервные записи.

person robertc    schedule 16.09.2010
comment
да, кажется, что, вероятно, я должен динамически генерировать [растущий] FALLBACK. Спасибо, что подтвердили мои опасения. - person ashishb; 20.09.2010
comment
@ashishb Я только что обнаружил, что текущая ночная версия Firefox 4.0 поддерживает подстановочные знаки в резервном разделе. Однако по-прежнему не работает в версиях для разработчиков Chrome или Opera. - person robertc; 02.10.2010

Ссылка на файл манифеста в невидимом iframe на странице индекса. Таким образом, ваша индексная страница не кэшируется, как обычно по умолчанию, и у вас есть полный контроль над резервными копиями...

Нет необходимости в ненадежных файлах cookie или localStorage!

person Cyril Mestrom    schedule 26.06.2012