Mạng mobile chập chờn và tốn pin, nên tầng networking cần chắc chắn:
- Gọi API: dùng
fetch/axios (RN), Retrofit (Android), Dio (Flutter). Đặt timeout, hủy request khi rời màn, xử lý lỗi và trạng thái loading rõ ràng. - Retry có kiểm soát: thử lại với backoff cho lỗi mạng/5xx; tôn trọng
Retry-Afterkhi bị429. - Caching:
- HTTP cache theo header (
Cache-Control,ETag/If-None-Matchđể validate, tiết kiệm băng thông). - Cache tầng ứng dụng: lưu response vào bộ nhớ/đĩa (SQLite/Room) để đọc offline.
- Mẫu stale-while-revalidate: hiện dữ liệu cache ngay rồi âm thầm cập nhật (thư viện như React Query/SWR, TanStack Query giúp sẵn cache/invalidation).
Hay hỏi: khác biệt giữa HTTP cache và cache tầng app, và cách chống hiển thị dữ liệu cũ.