Как я могу использовать кэш приложений HTML5 (appcache) для кэширования динамических страниц? - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть динамические страницы, которые я хотел бы сделать доступными в автономном режиме.Я хотел бы использовать кэш приложения HTML5 для этого.Проблема в том, что я не знаю всех ресурсов (JavaScript и CSS) для страницы, так как эти части являются динамическими.

У меня есть файл manifest.appcache, который выглядит следующим образом:

CACHE MANIFEST
#1330475607
CACHE:
/

Но, похоже, это только кеширует HTML страницы, а не остальные ресурсы страницы.Есть ли способ сделать что-то подобное?

Если нет, то возможно ли программно установить кэш с помощью JavaScript (полагаю, я мог бы перебирать теги link и script)?

Ответы [ 3 ]

2 голосов
/ 11 марта 2012

В разделе кеш файла манифеста каждый файл ресурсов должен указываться индивидуально.

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

Ресурсы в файле манифеста загружаются вместе со страницей.Большую часть времени javascript страницы выполняется после завершения этих загрузок.Так что мы никак не можем установить манифест кэша с помощью JavaScript.

0 голосов
/ 23 сентября 2015

Если вы посещаете старую школу (не отдыхаете) и используете параметры url, вы можете сделать это следующим образом.

Я решил это с помощью локального хранилища (для этого я использовал плагин jquery localstorage).

Процесс

  1. Внутри страницы, когда вы обычно берете ссылку с якоря или перенаправления, вместо этого вызывайте функцию для перенаправлений для вас.Эта функция сохраняет параметры из URL-адреса в localalstorage, а затем перенаправляет только на URL-адрес без параметров.
  2. На целевой странице-получателе.Получить параметры из локального хранилища.

Код перенаправления

function redirectTo(url) {
    if (url.indexOf('?') === -1) {
        document.location = url;
    } else {
        var params = url.split('?')[1];
        $.localStorage.set("pageparams", params);
        document.location = url.split('?')[0];
    };
}

Код целевой страницы

var myParams = GetPageParamsAsJson();
var page = myParams.page;

function GetPageParamsAsJson() {
    return convertUrlParamsToJson($.localStorage.get('pageparams'));
}

function convertUrlParamsToJson(params) {
    if (params) {
        var json = '{"' + decodeURI(params).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}';
        return JSON.parse(json);
    }
    return [];
}
0 голосов
/ 05 марта 2012

Насколько я знаю, вы не можете использовать подстановочный знак в разделе кеша (хотя он работает в разделе восстановления после сбоя) Вы также не можете выполнить цикл в javascript, поскольку манифест загружается до файла javascript.

Можно ли использовать серверный скрипт, который упаковывает все js / css в один файл?

...