2012-01-25 33 views
15

Tôi có một ứng dụng web nhỏ. Bảy trang, tổng số 3,6 KB index.html và tổng số 855,5 KB. Điều kỳ lạ duy nhất tôi có là một cơ sở dữ liệu (~ 500kb) trong Javascript với nhiều dòng như:Làm thế nào để tăng tốc jquery mobile/phonegap?

$.data(db,'Aarstraße',['34236:1','34246:2','34270:4','34290:6',...]); 

Tôi đã thử nghiệm nó trên iPod/iPhone và Android (HTC Magic) và nó là rất chậm:

Startup

  • iPhone: 14 giây
  • Android: 21 giây

tra trang đơn giản nsition (trượt)

  • iPhone: 3-4 giây
  • Android: 4-6 giây

Làm thế nào tôi có thể làm điều này nhanh chóng?

Tôi đã xóa box shadow.

Cập nhật

tôi loại bỏ các cơ sở dữ liệu rời 444.7KB tổng số trang. Bây giờ nó chạy nhanh hơn trên Android. Xung quanh giống như một chiếc iPhone. Nó vẫn cảm thấy rất chậm.

Cập nhật 2

Sau this question, tôi chuyển sang latest jquery mobile build. Nó cải thiện quá trình chuyển đổi trang cho các thiết bị Android chậm đến ~ 2 giây mỗi lần chuyển đổi. Bản phát hành phiên bản 1.1 sẽ là mid/late February.

+1

cơ sở dữ liệu javascript ?? bạn nên xem xét để chỉ phân phát dữ liệu khi cần. –

+1

@ stian.net Làm cách nào? Nó chỉ chứa 1800 dòng. – PiTheNumber

+1

500kb là khá nhiều cho một ứng dụng di động .. –

Trả lời

11

Có một vài điều bạn có thể làm:

  1. Get to deviceready faster.
  2. Giảm thiểu mã JS của bạn bằng cách sử dụng YUI Compressor
  3. Di chuyển thẻ tập lệnh của bạn xuống cuối thẻ body.

Như bạn đã đề cập bạn đã di chuyển cơ sở dữ liệu ra khỏi phương trình có thể mất phần lớn thời gian khi khởi động.

5

Bạn làm gì với jQuery-mobile? Hiệu suất của nó rất kém, bạn không bao giờ nên gọi nó trên các yếu tố lớn hơn cần thiết. Xem this discussion about jquery-mobile để biết chi tiết. Nó đang thực hiện rất nhiều hoạt động tìm kiếm DOM vì nó hoạt động bằng cách sửa đổi cây DOM. Đối với các thử nghiệm của tôi, nó hoạt động quá chậm ngay cả trên trình duyệt máy tính để bàn.

+6

Vì vậy, giải pháp không phải là để sử dụng jQuery, hm ... ok – PiTheNumber

+2

Sử dụng jQuery là tốt, jQuery-điện thoại di động đặc biệt được xem xét bởi một số phản ứng kém với PhoneGap. Dưới đây là một cuộc thảo luận về lý do: http://apachecordova.blogspot.com/2012/11/who-is-murdering-phonegap-its-jquery.html – garromark

+0

Lớn hơn yêu cầu, tôi có nghĩa là chẳng hạn, không hiển thị toàn bộ danh sách nếu chỉ một phần của nó sẽ được hiển thị. Bạn không muốn hiển thị cho người dùng một danh sách thả xuống có từ 100 vị trí trở lên! Nếu bạn muốn, xin vui lòng không muốn nó, nó sẽ di chuyển ngón tay của họ vào xương! –

4

Thử không chuyển tiếp. Ngay cả với jQuery 1.1, quá trình chuyển đổi trang có thể thực sự nhấp nháy và chậm trên iPhone.

Để thả chuyển trang trên toàn cầu, chỉ cần thêm dòng sau vào jqm.glocal.config.js

$(document).bind("mobileinit", function(){ 
    $.mobile.defaultPageTransition="none" 
}); 
Các vấn đề liên quan