Tôi cần tạo ứng dụng web HTML5 ngoại tuyến cho thiết bị iPad/máy tính bảng nơi người dùng có thể tải xuống tập dữ liệu (bảng dữ liệu) từ máy chủ và lưu trữ trên thiết bị. Sau đó, người dùng có thể ngắt kết nối khỏi máy chủ và xem/chỉnh sửa dữ liệu cục bộ trên thiết bị. Điều này dành cho những người làm việc ở những vùng xa xôi, nơi không có vùng phủ sóng di động và cần thu thập/cập nhật dữ liệu. Khi họ quay trở lại văn phòng, họ có thể đồng bộ/tải dữ liệu lên máy chủ. Lý do nó cần phải là HTML5 vì vậy nó là nền tảng bất khả tri, tức là có thể chạy nó trên iOS, Android vv miễn là nó có một trình duyệt web hiện đại hỗ trợ HTML5.Chức năng trình bao bọc cho IndexedDB
Bây giờ tôi đã xây dựng hệ thống bằng cách sử dụng bộ nhớ cục bộ HTML5 (cho dữ liệu) và bộ nhớ cache ứng dụng ngoại tuyến HTML5 (cho các trang/css/js/images) và nó hoạt động hợp lý với bộ dữ liệu nhỏ (tôi có thể xem , chỉnh sửa và lưu trong khi ngoại tuyến và tải/đồng bộ hóa khi trực tuyến). Bây giờ tôi cần phải mở rộng lên tới 10.000 hàng dữ liệu. Nó hoạt động nhưng nó khá chậm và treo trình duyệt trong 10 giây khi đang tải trên một máy tính 8 GB lõi tứ của Intel.
Vì vậy, tôi đã nghiên cứu một vài lựa chọn thay thế tốt hơn so với lưu trữ địa phương:
1) WebSQL: Sẽ là khả năng truy vấn dữ liệu bằng ngôn ngữ SQL và làm tham gia, vv Vấn đề là nó bây giờ bị phản một sẽ không được hỗ trợ lâu hơn vì vậy tôi không muốn đầu tư thời gian xây dựng một cái gì đó cho nó.
2) IndexedDB: Sử dụng kho lưu trữ đối tượng (về mặt kỹ thuật tôi đã lưu trữ các đối tượng bằng cách sử dụng API lưu trữ cục bộ và lưu trữ bằng JSON). Có khả năng nhanh hơn vì nó sử dụng các chỉ mục với phần phụ trợ SQL lite. Có rất nhiều mã soạn sẵn để thực hiện các tác vụ đơn giản như tạo cơ sở dữ liệu, thêm vào đó, đọc từ nó, lặp lại nó. Tôi chỉ muốn thực hiện một truy vấn đơn giản như select(xyc, abc).where(abc = 123).limit(20)
nhưng thay vào đó phải viết rất nhiều mã JavaScript để làm điều đó. Làm thế nào để viết mã riêng của họ để thực hiện các phép nối giữa các bảng, bất kỳ ví dụ nào ở bất kỳ đâu?
Tôi đã tìm thấy một jQuery plugin có thể làm cho cuộc sống trở nên đơn giản hơn. Có những thứ khác xung quanh hoặc các thư viện khác làm giảm bớt nỗi đau khi sử dụng IndexedDB không?
Rất cám ơn!
Tôi tin rằng WebSQL đã bị bỏ rơi ủng hộ IndexedDB ... –
Xem ra cho WebSQL, Apple 5.0.1 không còn tồn tại dữ liệu WebSQL nữa. Nói cách khác, điều này sẽ làm tê liệt cơ sở dữ liệu cục bộ của ứng dụng của bạn. Phonegap có một giải pháp thay thế. https://issues.apache.org/jira/browse/CB-330 – Wytze