У мобильных веб-браузеров и мобильных веб-приложений один и тот же localStorage? - PullRequest
2 голосов
/ 07 октября 2011

Я работаю над сайтом для мобильных устройств. Сайт доступен через обычные веб-браузеры, а также через приложение, которое является просто оболочкой браузера и открывает мобильный сайт. В наших усилиях по ускорению загрузки сайта на мобильных устройствах мы сократили требования, использовали данные и т. Д. Недавно мы начали использовать localStorage для сохранения стилей и данных JavaScript на устройстве.

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

Проблема в том, что у нас есть стили и JavaScript, которые специально для вас, если вы находитесь в браузере или в приложении для нескольких мелких вещей. Мы видели несколько вещей, разбивающихся об этих тонких различиях, и моя лучшая теория заключается в том, что localStorage используется совместно браузером и приложением. И у пользователя, который использует и сайт, и приложение, могут возникнуть проблемы, если localStorage был задан одним из них и ему нужно что-то другое для другого.

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

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Если вы доверяете Apple ...

Как и файлы cookie, объекты хранения являются общим ресурсом, общим для веб-контента, обслуживаемого из того же домена. Все страницы из одного домена имеют общий локальный объект хранения .Кадры и встроенные кадры, содержимое которых имеет одинаковое происхождение, также совместно используют один и тот же объект хранения сеанса, поскольку они происходят из одного и того же окна.

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

Если вы заполняете свое приложение данными из того же места, что и веб-приложение, я подозреваю, что есть некоторыеключи изменяются другим.Я знаю, что использование sessionStorage.clear () уничтожит ключи, если веб-приложение и автономное приложение загружают данные из одного домена.

0 голосов
/ 16 октября 2011

Как сказал Chiguireitor, это зависит от того, какую мобильную ОС использует пользователь, но по моему опыту iOS 4 и 5 используют один и тот же localStorage, независимо от того, используете ли вы мобильное приложение через браузер Safari или как веб-приложение для домашнего экрана. И, конечно, если вы упаковываете что-то вроде Phonegap, оно действует как собственное приложение, поэтому его localStorage не используется совместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...