Может ли управляемый манифестом ресурс оставаться в автономном режиме в собственной кэшированной копии? - PullRequest
2 голосов
/ 18 января 2012

Я использую манифест HTML5, чтобы приложение могло работать в автономном режиме.У меня есть ресурс - скажем, / background.png - который может время от времени обновляться, но если приложение находится в автономном режиме, последняя полученная версия подходит для использования.Я хочу, чтобы браузер запрашивал / background.png в обычном режиме, если он подключен к Интернету, но должен возвращаться к кешированной версии, если запрос не выполняется, поскольку он отключен, сервер выключен и т. Д.

В моем тестировании наличие записи манифеста типа

NETWORK:
/background.png

заставило браузер всегда пытаться запросить ресурс.Он вернул бы ошибку, а не возвращал копию из кэша приложения, если бы он находился в автономном режиме.Это не то, что я хочу, но именно так должна вести себя СЕТЬ, как я понимаю.

Я также пытался

FALLBACK:
/background.png /background.png

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

Еще одна возможность, которую я рассмотрел, была

CACHE:
/offline-background.png

FALLBACK:
/background.png /offline-background.png

, но сдва разных имени для одного и того же ресурса - и один и тот же ресурс запрашивался дважды (один раз для img src = "background.png" и один раз для кэшированной автономной копии) - казалось непривлекательным хаком.

Я мог бы также внести произвольное изменение в манифест при изменении background.png , но это заставило бы браузер проверить все в манифесте.

Возможно ли этополучить шаблон «использовать то, что у меня есть, если я не могу получить новый» из манифеста HTML5?Это похоже на разумную модель, поэтому я думаю, что был бы чистый способ сделать это.Если нет, может кто-нибудь предложить другой подход?Заранее спасибо!

РЕДАКТИРОВАТЬ: оригинальный вопрос ссылался на "news.json", подразумевая, что ресурс был получен с помощью JavaScript, но я изменил его на "background.png", чтобы сделать его более понятным, чтоЯ хотел бы сделать это с любым ресурсом, используемым страницей.

1 Ответ

0 голосов
/ 18 января 2012

Лучший способ самостоятельно управлять кэшированием - поместить его в локальное хранилище .Вы должны иметь возможность просто удалить JSON из вашего новостного канала прямо в одну переменную.Когда вы запрашиваете файл /news.json, обновляйте только его кэшированную копию в ответе 200, в остальном приложении всегда используйте копию в локальном хранилище.

...