Как стать автором
Обновить

Комментарии 23

Отличная статья, давно такую ждал, только помарки стоит исправить.
Теперь с замиранием сердца жду ajax-ов на swapCache().
appCache уже существует года эдак 3, а особого большого числа использующих его нет потому, что просто неудобно, а не потому, что не знают как пользоваться.
appCache это ад. Гораздо лучше localStorage использовать, если уж нужно.
Конечно. Но в любом случае сайт в оффлайне запускать нужно из Application Cache. И для подключаемых .css, .js файлов использование Application Cache — более естественно. А непосредственно сам контент — без сомнения localStorage и изредка WebSQL.
Какой ещё ад?
Если подойти к делу с умом, то вся настройка кэширования сводиться написанию файла manifest и добавлением нескольких строчек в .htaccess.
appCache и localStorage для разного. Так-то.
Уже внедрил в проект :)
Великолепные ощущения… Проект ускорился, особенно для стадии дебага из VS.
Замечание: Mozilla Firefox не кэширует динамически созданную страницу (.php) с атрибутом manifest.
Я не понял о чём вы тут говорите. На основании каких признаком Файерфокс не кеширует страницу? По присутствию в конце урла до вопроса подстроки «.php»? По каким-то заголовкам? «.php5» будет кешироваться?
Подозреваю, что FF смотрит на расширение файла. Я доскональное тестирование в этом направлении не проводил.
Для этого в спецификации HTML5 определенны два события online и offline, которые вызываются при создании и разрыве соединения соответственно. Но пока они ни в одном из браузеров не работают
Проверил только что в Сафари 6 и Хроме 21, работают.
Спасибо за информацию. Добавил в статью.
По моему они уже давно работают везде.
Полгода назад проверял в расширениях Хрома — не работало.
Щас проверю ещё раз.
Только что в расширениях последнего Хрома:

window.navigator.onLine показал мне true в обоих случаях — что при интернете, что тогда, когда я вырубил сетевую карту.
Свойство проверяет есть ли соединение по факту, или нет. Возможно Вы делаете что-то не так.

Только что проверил в последнем Хроме — всё работает.
Вы проверили в расширениях? Или просто в браузере?
Я только что проверил просто в браузере — в Хроме и в FF — всегда true.

В FF можно выбрать пункт меню «работать автономно», тогда получается false.

Но ведь нужно динамически узнать, пропало ли соединение. А этого я не наблюдаю. Всегда true.

Как именно вы проверяете? Что для вас означает «пропал интернет»?
Вы путаете факт наличия трафика и соединения. window.navigator.onLine — работает именно с соединением. «Пропал интернет» — означает потерю связи с сервером провайдера, разрыв соединения.
«работать автономно» автоматически запускается при отсутствии соединения
ну вот смотрите:

1. есть интернет, открываем сайт — onLine показывает true
2. выдёргиваем сетевой шнур — интернет проопал же?
3. запускаем сайт — onLine опять показывает true

почему? ведь интернет пропал.
Да, Вы правы.
По неизвестной мне причине FF и Opera не автоматически переходят в автономный режим при потере соединения. Подозреваю, что это как-то связанно с настройкой сети.
А если сайт находиться в LAN или на локальном диске, то отсутствие интернета ему по-боку…
Оффлайн режим — значит никаких сетевых отношений. Только файлы с диска и кэша.
Кстати говоря, проверить, работает ли приложение офлайн (через appCache) из js можно через window.navigator.onLine. Удобно, если на основе этого надо по-разному инициализировать модель, к примеру, использовать Backbone.sync для localStorage или для сервера.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации