HTML5 Local Storage stringify и хранит КАЖДУЮ ссылку на объект - PullRequest
0 голосов
/ 11 мая 2011

Со следующим JSON:

var myObj = {name: 'my obj', does: 'nothing'};
var myObjArr = [myObj, myObj, myObj];

При сохранении myObjArr в локальном хранилище, myObj JSON записывается в 3 раза, занимая в 3 раза больше места, т. Е .:

"[{"name":"my obj","does":"nothing"},{"name":"my obj","does":"nothing"},{"name":"my obj","does":"nothing"}]"

Очевидно, что это создаст проблемы с масштабируемостью.Кто-нибудь может порекомендовать оптимальное решение?До сих пор мне приходилось прибегать к использованию идентификаторов, а-ля реляционных баз данных.

var objects = {0: {name: 'my obj', does: 'nothing'}};
var myObjArr = [{obj: 0}, {obj: 0}, {obj: 0}];

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

1 Ответ

1 голос
/ 12 мая 2011

Более подходящей технологией будет IndexedDB , используемая в качестве хранилища объектов, однако она пока не поддерживается во многих браузерах.

РЕДАКТИРОВАТЬ: вам нужно просмотреть документацию алгоритма структурированного клонирования , который используется при копировании объекта в IndexedDB - похоже, ссылки поддерживаются для каждой записи, но добавляется несколько записей не приведут к тому, что каждая запись ссылается на объекты, которые были разделены в пространстве памяти JavaScript.

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