Đăng ngày: bởi Đỗ Anh Tuấn

Muốn nhanh thì phải chạy trước

Nói một cách ngắn gọn, những gì Apple đang cố cải tiến trên iPhone là như sau: thay vì chỉ tải nội dung mới về máy khi bạn đã cuộn hết phần nội dung cũ, các API sẽ tải về các nội dung bạn sắp cần (theo dự đoán) tại một mốc thời gian sớm hơn.

Ví dụ, khi cuộn nội dung trên các ứng dụng như Facebook, 9GAG, Messenger hoặc Instagram, bạn sẽ thấy các ứng dụng này được phân bổ thành các "gói" (block) dữ liệu khác nhau. Ví dụ, Facebook sẽ tải về từng cụm bài viết, Messenger sẽ tải về từng cụm tin nhắn đến thời điểm nào đó. Nếu bạn cuộn quá nhanh, một số ứng dụng có thể gặp hiện tượng chậm giật vì phải liên tiếp tải quá nhiều block dữ liệu cùng lúc. Đây là hiện tượng "sụt giảm khung hình" - một hiện tượng tạo ra cảm giác kém chất lượng cho các ứng dụng.

Lý do dẫn đến hiện tượng này, theo Apple, là bởi các block dữ liệu chỉ được bắt đầu tải về khoảng vài mili-giây trước khi người dùng cuộn tới cuối trang.

 

Để tránh được hiện tượng này, Apple sẽ cung cấp cơ chế để các ứng dụng có thể tải về nội dung cần thiết trước khi người dùng cuộn tới vị trí cuối trang. Điều này đảm bảo cho hiệu năng khi cuộn trang sẽ không bị ảnh hưởng đáng kể, thời gian tải được giảm thiểu. Độ mượt được Apple đề ra là 60 khung hình/giây, một con số mà các ứng dụng hiện nay thường không thể đáp ứng được.

Apple khẳng định kết quả thử nghiệm khi đẩy sớm thời điểm tải block dữ liệu cho thấy các ứng dụng hoàn toàn có thể chạm mốc 60 khung hình/giây một cách dễ dàng.

Không chỉ thực hiện "nạp dữ liệu từ sớm" ("pre-fetching"), Apple cũng tăng thời gian lưu bộ nhớ của các block nội dung cũ. Các block dữ liệu cũ, vốn sẽ được xóa khỏi màn hình khi bạn cuộn trang, nay sẽ được giữ trên bộ nhớ lâu hơn trong trường hợp người dùng nhớ ra một nội dung nào đó họ cần đã bị bỏ ở phía trên và muốn cuộn trở lại. Hiệu ứng giảm thời gian tải cũng sẽ được áp dụng trong trường hợp này.

Thay đổi cách truy nhập dữ liệu

Apple cũng đã thay đổi cách các ứng dụng truy cập vào dữ liệu. Các API mới vẫn sẽ truy cập dữ liệu theo cách không đồng bộ (async, phương pháp để giảm tải hệ thống) như trước, nhưng các lượt gọi (kích hoạt) API sẽ được thực hiện nhanh hơn. Giải pháp mới được Apple thiết kế để kết hợp với Core Data, song vẫn sẽ hoạt động tốt với các giải pháp khác.

 

Từ khía cạnh này, các giải pháp database như Realm sẽ trở nên phù hợp hơn với các ứng dụng di động. Dù đã nhanh hơn Core Data và SQLite khá nhiều, các giải pháp tải dữ liệu của Apple giờ đây đã thực sự ngang ngửa với các công nghệ tân tiến nhất.

Theo thiết kế mới, API sẽ tải dữ liệu trên một queue (hàng xếp thứ tự) dưới nền để không ảnh hưởng đến luồng chính. API mới cũng sẽ tự thích nghi với tốc độ scroll để tốc độ tải dữ liệu có thể theo kịp hành vi của người dùng.

Thêm thông tin, ít vấn đề hơn

Nếu bạn đang băn khoăn về các ứng dụng có nhiều cột nội dung tương ứng với nhiều luồng dữ liệu, Apple cũng đã có giải pháp dành cho bạn.

Hiện nay, ở cùng một thời điểm các ứng dụng này đang tải tất cả các ô dữ liệu (cell) trong một hàng. Cũng giống như các ứng dụng chỉ có một cột thông tin duy nhất, mô hình nói trên có thể gây ra hiện tượng chậm giật. Với iOS 10, các ứng dụng có nhiều cột nội dung sẽ tải lần lượt các ô dữ liệu theo mô hình domino.

 

Nhờ có mô hình này các ứng dụng phức tạp sẽ có hiệu năng ngang ngửa với các ứng dụng đơn giản và cũng không đòi hỏi các nhà phát triển phải bỏ thêm công sức tối ưu sản phẩm của họ. Apple cũng cho biết các ứng dụng nhiều cột sẽ hoạt động tốt nhất nếu các ô dữ liệu có kích cỡ tương đương nhau, dù rằng đây không phải là một yêu cầu bắt buộc.

Các ứng dụng có giao diện trang (page) hoặc bảng (table) cũng sẽ hưởng lợi từ mô hình mới, bởi API của Apple sẽ hoạt động với cả 2 loại ứng dụng này để tăng tốc độ tải dữ liệu.

Thay đổi không nhọc công

Điều thú vị nhất là các nhà phát triển ứng dụng sẽ không phải tốn một chút công sức nào để tận hưởng thành quả từ Apple. Tất cả các thay đổi đều được thực hiện ở backend của các API đã có sẵn. Do đó, bạn chỉ cần biên dịch lại các app đã có từ trước cho iOS 10 và ngay lập tức chúng sẽ trở nên mượt mà, nhanh nhạy hơn rất nhiều.

Nếu không thích sử dụng mô hình tải dữ liệu mới, các nhà phát triển chỉ cần thêm vào một dòng code duy nhất. Dĩ nhiên, họ sẽ chẳng có lý do gì để làm như vậy cả.

 

Đây là một thắng lợi khổng lồ cho cả người tiêu dùng lẫn các nhà phát triển. Bằng cách mang tới một thay đổi to lớn nhưng lại không khiến các lập trình viên tốn một chút công sức nào, Apple đã giúp cho các ứng dụng hoạt động nhanh hơn - đồng nghĩa với một trải nghiệm người dùng tốt đẹp hơn rất nhiều so với trước đây.b

Ý kiến bạn đọc
Để lại ý kiến

Top

Sale

Không sẵn có

Hết hàng