Тип подключения: теория и будущее
Существует черновик спецификации Network Information API на W3C, предоставляющий информацию о соединении. тип (ethernet wifi 2g 3g 4g и т. д.), но он еще не реализован ни в одном браузере, кроме:
стандартный браузер Android на Android 2.2+ (не браузер Google Chrome)
navigator.connection.type
// На основе проекта W3C (реализовано в стандартном браузере Android)
и PhoneGap, который не совсем браузер.
navigator.network.connection.type
// в PhoneGap
Имея эту информацию в будущем, вы могли бы определить, есть ли у пользователя сотовые данные, а затем временно удалить src изображений и спросить пользователя через диалоговое окно подтверждения.
Вам также, вероятно, придется отменить обновление кеша приложения, используя: window.applicationCache.abort()
(документация)
Реальность
К сожалению, Net Info API недоступен (по крайней мере, не получил широкого распространения) на данный момент, но наверняка поможет в будущем.
Дальний план
Существует база данных, включающая скорость сети (DIAL = коммутируемый доступ, DSL = широкополосный/кабельный, COMP = компания/T1), но я ею не пользовался и сомневаюсь, что она поможет.
Динамический кэш приложений
Проверяя это, я попытался сгенерировать тег html вместе с объявлением манифеста на лету, чтобы объединить его с API-интерфейсом Network Info, но манифест AppCache загружается до выполнения javascript и после этого не изменяется. Таким образом, изменение файла манифеста на лету через Javascript невозможно, а URI данных не подходит.
Альтернативное решение
Кэш приложений HTML5 в настоящее время является диким зверем, и есть переговоры чтобы улучшить его. Пока он не изменится для поддержки более сложных конфигураций (флаг уровня пропускной способности был бы отличным), вы можете изменить точку зрения на решение, хотя App Cache может быть лучшим, что у вас есть на данный момент.
В зависимости от того, насколько велики ваши изображения, вы можете полагаться на обычный кеш браузера. Вы можете комбинировать localStorage и далекое будущее заголовки HTTP с истечением срока действия. LocalStorage для отслеживания загруженных/кешированных изображений.
- Сначала добавьте дату истечения срока действия в далеком будущем для заголовков HTTP ваших изображений.
- При загрузке страницы удалите все src из imgs
- Зациклите изображения и проверьте localStorage, если каждое изображение было загружено в прошлом.
- Если есть изображения, которые не были загружены в прошлом, отобразите диалоговое окно, подтверждающее загрузку этих изображений.
- Если изображение было загружено в прошлом, верните src на img.
- Для каждого загруженного изображения сохраните его URL-адрес в localStorage.
person
Sev
schedule
14.10.2012