Bạn có thể giải quyết vấn đề này mà không cần cơ sở dữ liệu, nhưng tôi không khuyến nghị. Về cơ bản, bạn có các cặp (người dùng, localStorage) và khi một người dùng nhất định tự nhận mình, localStorage của anh ấy / cô ấy nên được cung cấp theo cách. Bạn có thể yêu cầu người dùng lưu trữ kho lưu trữ cục bộ của họ tại máy riêng của họ, nhưng sau đó họ sẽ phải sao chép nó sang các máy khác, sử dụng nhiều lao động và sẽ không bao giờ phổ biến. Người ta có thể tự chạy một đoạn Javascript trong bảng điều khiển của trình duyệt của họ để đảm bảo rằng localStorage có dữ liệu của họ và phải sao chép các máy cục bộ cục bộ chỉ dễ dàng hơn một chút so với thực hiện thủ công toàn bộ.
Bạn có thể đặt thông tin localStorage được mã hóa vào một URL, nhưng bên cạnh vấn đề về độ dài URL, có thể trở thành vấn đề và hiện tại vấn đề mã hóa, toàn bộ localStorage của bạn có thể được giám sát bởi bên thứ ba, có quyền truy cập vào bộ định tuyến của bạn. Tôi biết bạn đã nói rằng các dữ liệu không phải là nhạy cảm, nhưng tôi tin rằng bạn biết rằng nó không bị ảnh hưởng chưa . Nhưng một khi người dùng sẽ sử dụng điều này, nếu thuận tiện, họ cũng sẽ lưu trữ dữ liệu nhạy cảm hoặc khách hàng của bạn có thể có những nhiệm vụ đó cho bạn hoặc thậm chí bạn có thể nhận ra rằng bạn cần lưu trữ dữ liệu không công khai 100%.
Bên cạnh đó, trong thực tế, bạn sẽ phải đối mặt với các vấn đề đồng bộ hóa rất nghiêm trọng, đó là tất cả đều tốt đẹp để biến bất khả tri của LocalStorage, nhưng sau đó, phiên bản thực sự là gì? Nếu bạn thường xuyên làm việc trên 10 phiên khác nhau, thì việc đồng bộ hóa LocalStorages trở thành một vấn đề khó khăn. Điều này có nghĩa là localStorage cần được đánh dấu thời gian.
Vì vậy, bạn sẽ cần một vị trí trung tâm, một máy chủ để lưu trữ phiên bản localStorage đã lưu cuối cùng. Nếu bạn bị đảo ngược bởi cơ sở dữ liệu vì một số lý do không rõ ràng, bạn có thể lưu trữ LocalStorages bên trong các tệp xác định người dùng, như
johndoe.json
và sau đó, bạn sẽ cần triển khai một tính năng xuất, sẽ gửi JSON hiện tại của người dùng đến máy chủ và lưu nó vào một tệp và một tính năng nhập, sẽ tải xuống tệp được lưu trữ cho người dùng và đảm bảo rằng localStorage được cập nhật phù hợp. Bạn có thể làm cả hai cùng nhau, thực hiện đồng bộ hóa.
Điều này là đơn giản cho đến nay, nhưng nếu người dùng đã có một số dữ liệu hữu ích bên trong localStorage cục bộ của mình và trên máy chủ thì sao? Cách tiếp cận đơn giản nhất là ghi đè cái này với cái khác, nhưng cái nào? Nếu chúng ta đang nhập, thì cái cục bộ bị ghi đè, nếu xuất, thì cái trên máy chủ bị ghi đè, nếu chúng ta đồng bộ hóa, thì cái cũ hơn sẽ bị ghi đè.
Tuy nhiên, trong một số trường hợp, bạn muốn hợp nhất hai LocalStorages của cùng một người dùng, vì vậy:
yếu tố mới
Tôi tin rằng nếu một yếu tố là mới, thì nó phải được biết theo một cách nào đó rằng nó đã được tạo trong phiên này, điều này rất hữu ích để biết, bởi vì điều đó có nghĩa là trong phiên khác mà chúng tôi đang hợp nhất, mục mới này đã không bị xóa và do đó trực quan để thêm nó.
thay đổi yếu tố
Nếu cùng một yếu tố khác nhau trong hai trường hợp, thì phiên bản mới hơn sẽ chiếm ưu thế.
loại bỏ các yếu tố
Trường hợp thú vị là khi trong một phiên nó đã bị xóa và trong phiên khác nó đã được cập nhật. Trong trường hợp này tôi nghĩ rằng sự thay đổi mới hơn sẽ chiếm ưu thế.
Tuy nhiên, bất chấp những nỗ lực tốt nhất của bạn, người dùng vẫn có thể làm hỏng (và cả phần mềm của bạn), vì vậy sao lưu mỗi phiên trên máy chủ của bạn có ý nghĩa.