Thứ nhất, bạn sẽ cần một số hình thức lưu trữ ngoại tuyến. Khả năng của HTML5 là sự kế thừa cho Google Gears, như đã nêu trên số google gears developer blog; về cơ bản, mục đích của Google Gears chỉ là thúc đẩy sự phát triển & tiếp theo sử dụng các tính năng HTML 5.
Cụ thể là bạn nên xem các API HTML5 offline (here's a tutorial) và các API Storage cũng có thể hữu ích (relevant tutorial).
Về thiết kế, về cơ bản bạn cần phải duy trì trạng thái ứng dụng web hoàn chỉnh của ứng dụng web, sau đó gửi qua các khác biệt (tức là cập nhật trạng thái phía máy chủ) ngay sau khi kết nối với máy chủ khả dụng trở lại.
Off đỉnh đầu của tôi, có 2 cách đơn giản để thiết kế này:
Rõ ràng duy trì trạng thái ứng dụng riêng biệt cho các client và server. Về cơ bản, khi người dùng thực hiện hành động, trước tiên nó được áp dụng cho trạng thái ứng dụng khách, và sau đó tại các khoảng thời gian được chỉ định (và/hoặc trình kích hoạt, ví dụ như người dùng nhấp vào nút lưu), máy khách gửi qua sự khác biệt giữa trạng thái đã biết cuối cùng của máy chủ và trạng thái hiện tại của máy khách. Điều này có thể phù hợp nhất với các ứng dụng web có tính tương tác cao và tôi nghi ngờ Google Documents hoạt động trên loại thiết kế này. Tùy thuộc vào ứng dụng của bạn (nếu "thay đổi xung đột" có thể xảy ra), bạn cũng cần phải tính đến trạng thái hợp nhất của ứng dụng: bạn có ghi đè trạng thái ứng dụng khách đã nhận cuối cùng hay bạn cố hợp nhất không? (bạn sẽ phải quyết định điều gì có ý nghĩa hơn cho ứng dụng cụ thể của bạn.)
Ghi lại hành động của người dùng khi ngoại tuyến và phát lại chúng sau khi kết nối khả dụng trở lại. Về cơ bản, bạn triển khai thực hiện Command design pattern và có cả mã phía máy khách lẫn mã phía máy chủ của bạn có thể xử lý từng lệnh. Mã phía máy khách luôn xử lý mỗi lệnh và trong khi kết nối với máy chủ có sẵn, mã phía máy khách của bạn cũng sẽ gửi các lệnh tới máy chủ. Có thể bạn sẽ muốn triển khai một số lô, để tránh các yêu cầu liên tục đến máy chủ và cũng có một số chức năng quay lại khi yêu cầu máy chủ không thành công (ví dụ: các thay đổi xung đột). Điều này kết thúc bằng việc tìm kiếm nhiều hơn hoặc ít hơn như giao diện người dùng quản lý email chính của GMail, nơi bạn có thể hoàn tác các hoạt động.
Bạn có thể thử cách khác. Ví dụ: một ứng dụng flash được sử dụng cho chế độ ngoại tuyến. Trong khi một ứng dụng web được sử dụng cho chế độ trực tuyến. –
Bộ nhớ ngoại tuyến được ghi đè. – bhagyas