@JoveLebedev

Можно ли хранить массивы большого обьема в localstorage?

Обдумываю сценарий отправки и получения сообщений по XMPP.
Начну с получателя. Юзер открывает сайт, авторизуется, и сразу после этого получает массив последних 100 исторических + n непрочитанных сообщений из MySql в localstorage, откуда берутся данные для оповещения и наполнения страницы с "диалогами".

Если адресат отправляет сообщение, которое передается по XMPP, оно записывая в БД с метками "не прочитано", после чего, если у получателя открыта вкладка - сообщение добавляется в массив localstorage, из содержания которого, как я говорил, строится страничка с диалогами и он оповещается, а в противном случае пользователь загрузит новые сообщения из БД при входе. Т.е. таким образом я миную загрузку новых сообщений из БД.

По поводу этого у меня появились вопросы:
  • Можно ли хранить данные подобного рода в localstorage и как это отразится на производительности?
  • Безопасно ли это?
  • Возможно ли с точностью 100% определить открыта ли хоть одна вкладка на домене и если нет, то как поступить лучше в этом случае?
  • Какие у вас вообще мысли по поводу всего этого?
  • Вопрос задан
  • 2847 просмотров
Пригласить эксперта
Ответы на вопрос 1
effetto
@effetto
.Net разработчик
1) Хранить подобные данные можно, но никто не гарантирует объема хранилища, а так же сохранности содержимого.
2) Безопасно от кого? К сообщениям будет иметь доступ любой пользователь браузера на локальной ЭВМ.
3) Для протоколирования вкладок организуйте список уникальных ключей вкладок, установите время жизни этих переменных и обновляйте их раз в небольшой период.

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

Рекомендую к использованию библиотеку jStorage.

Обращаю Ваше внимание на то, что не все браузеры поддерживают функционал надлежащим образом. Имейте бексовместимость.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы