Манифест кэша HTML5 Как запросить просмотр кэшированного файла в Интернете, если это возможно?

Я разрабатываю веб-приложение HTML5 для iPhone, и я застрял в довольно странной ситуации. Мне нужно кэшировать все это для использования в автономном режиме, и это нормально, но дело в том, что когда вы подключаетесь к сети позже, он все еще использует версию кэша. Мне нужно, чтобы приложение использовало онлайн-версию вместо кешированной версии, когда это возможно, но мне не удается найти информацию об этом.

Заранее спасибо!


person Johan S    schedule 10.03.2012    source источник
comment
Дубликат html5-use-cache-only-when-offline.   -  person pyramids    schedule 13.04.2014


Ответы (1)


Я не знаю, какой фреймворк вы используете, но в Sencha вам нужно указать использовать сеть, выполнив что-то вроде этого:

NETWORK:
*

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

Теперь все становится немного сложнее.

Статья: http://www.sencha.com/learn/taking-sencha-touch-apps-offline/

В этом автономном примере Sencha они устанавливают прокси для кешированной базы данных, а затем переключаются между кешем браузера и локальным хранилищем.

Затем вы хотите создать прослушиватель без тайм-аута, чтобы определить, находитесь ли вы в автономном режиме или в сети.

Если у вас тайм-аут, то используйте локальный прокси. Так:

this.onlineStore.addListener('load', function () {
    console.log("I think we are online");
    helloWorld.offlineStore.proxy.clear();
    this.each(function (record) {
        var photo = helloWorld.offlineStore.add(record.data)[0];
    });
    helloWorld.offlineStore.sync();
    helloWorld.gallery.bindStore(helloWorld.offlineStore);
});
person User970008    schedule 10.03.2012
comment
Итак, если приложение находится в сети, но кэширует копию, например, index.html, когда я посещаю www.example.com/index.html, вы не можете получить к нему доступ, если пользователь не удалит index.html из своего кэша? - person Johan S; 11.03.2012
comment
Я не использую никаких фреймворков, кроме немного jquery mobile, но только когда это необходимо. - person Johan S; 11.03.2012
comment
Есть два тайника. Кэш браузера для страниц и изображений. А потом кеш приложений. Если вы укажете ресурс в файле манифеста, он будет кэширован для приложения. Это будет часть приложения, сохраненного на локальном устройстве. Поэтому, если вы объявите файл javascript частью приложения, он будет кэшировать этот файл js. Ваш пример index.html будет автоматически кэширован в браузере, если вы не объявите его в своем файле манифеста. Загвоздка с кешем браузера в том, что он будет подчиняться настройкам, которые вы для него установили. - person User970008; 11.03.2012
comment
Итак, поскольку этого html-файла нет в манифесте, ваш браузер будет отвечать за кеш. - person User970008; 11.03.2012
comment
Тем не менее, нет способа указать веб-приложению использовать онлайн-контент, когда он доступен, или кэшированную версию? - person Johan S; 11.03.2012
comment
Я только что увидел, что это двойное сообщение, stackoverflow.com/questions/9343908/ - person Johan S; 11.03.2012
comment
Привет, да, есть способ. Я отредактировал свой ответ, используя пример Sencha. - person User970008; 11.03.2012