2012-02-15 18 views
6

Tôi đã cố gắng sử dụng cơ sở dữ liệu web sql api trong trình duyệt dựa trên webkit. Tôi đã sử dụng async api trong chủ đề chính uinhân viên web. Cả hai luồng đều truy cập vào cùng một cơ sở dữ liệu (mà bạn biết là sqlite underthehood)Lưu trữ cục bộ nào trong html5 tôi có thể sử dụng an toàn trong chuỗi ui trình duyệt và chuỗi công việc web

Mọi thứ hoạt động tốt nhưng thỉnh thoảng giao dịch bị mất hoặc một giao dịch không thành công và có vẻ là điều kiện thời gian/chủng tộc. Nó xuất hiện truy cập vào cơ sở dữ liệu sqlite cơ bản không phải là thread-safe.

Nền hơn một chút. Nhân viên web của tôi chỉ đơn giản là thực hiện một truy vấn đối với một bảng có thể có một bản ghi được chèn vào nó từ luồng ui chính.

Tôi tự hỏi nếu nó thực sự được ghi lại ở đâu đó bộ nhớ cục bộ/web có thể truy cập an toàn từ chuỗi ui và chuỗi công nhân web không? Tôi đã đọc ở đâu đó rằng indexeddb api là chủ đề an toàn nhưng điều đó không giúp tôi ngay bây giờ vì trình duyệt hỗ trợ cho nó kém/không tồn tại đối với các trình duyệt tôi đang nhắm mục tiêu (ít nhất tôi nghĩ vậy - tôi lấy thông tin của mình từ http://caniuse.com)

Bất kỳ hiểu biết sẽ biết ơn nhận

+0

Tôi thậm chí không biết rằng nó có thể truy cập bộ địa phương trong chủ đề người lao động? Xem http://stackoverflow.com/questions/6179159/accessing-localstorage-from-a-webworker –

+0

Có thể bạn đã đúng. Tôi có thể đưa ra giả định không chính xác vì các cơ sở dữ liệu WEB SQL có thể truy cập được từ luồng công nhân. Thật không may họ dường như không được thread an toàn khi bạn mở cùng một cơ sở dữ liệu web sql từ 2 trình duyệt ui và nhân viên web. – paul

+2

WebSQL không được chấp nhận - vì vậy tôi đoán bạn không muốn sử dụng nó (ngay cả khi đó là chuỗi an toàn). Chẳng bao lâu nữa chúng tôi sẽ hỗ trợ indexedDB trong webWorkers. –

Trả lời

2

Bạn không thể sử dụng localStorage hoặc sessionStorage từ WebWorkers.

Trong khi cả hai hoạt động đồng bộ, chúng không phải là vấn đề thực sự để viết và đọc dữ liệu đơn giản. Vấn đề có liên quan hơn khi khởi động trình duyệt, nhưng đó là vấn đề triển khai trình duyệt.

Hãy xem này, nó sẽ giúp: http://www.nczonline.net/blog/2012/04/25/the-performance-of-localstorage-revisited/

Các vấn đề liên quan