Какое локальное хранилище в html5 можно безопасно использовать в потоке пользовательского интерфейса браузера и в потоке веб-рабочего - PullRequest
6 голосов
/ 15 февраля 2012

Я пытался использовать web sql api в браузерах на основе webkit. Я использовал async api в главном пользовательском потоке и веб-работник . Оба потока обращаются к одной и той же базе данных (которая, как вы знаете, является недосказанным)

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

Немного больше фона. Мой веб-работник просто выполняет запрос к таблице, в которую может быть вставлена ​​запись из основного потока пользовательского интерфейса.

Мне интересно, задокументировано ли это где-нибудь, что локальное / веб-хранилище может быть безопасно доступно как из потока пользовательского интерфейса, так и из потока веб-рабочего? Я где-то читал, что indexeddb api является потокобезопасным, но это мне сейчас не помогает, так как его поддержка в браузере плохая / отсутствует для браузеров, на которые я нацеливаюсь (по крайней мере, я так думаю - Я получаю информацию от http://caniuse.com)

Любые идеи будут с благодарностью приняты

1 Ответ

2 голосов
/ 20 июня 2012

Вы не можете использовать localStorage или sessionStorage от WebWorkers.

Хотя обе являются синхронными операциями, они не представляют реальной проблемы для простого записи и чтения данных. Эта проблема более актуальна при запуске браузера, но это проблема реализации браузера.

Взгляните на это, оно должно помочь: http://www.nczonline.net/blog/2012/04/25/the-performance-of-localstorage-revisited/

...