2012-01-25 20 views
15

Mam małą aplikację internetową. Siedem stron, 3,6 KB index.html i 855,5 KB łącznie. Jedyną dziwną rzeczą mam to baza danych (~ 500kb) w JavaScript z wieloma liniami takimi jak:Jak przyspieszyć jquery mobile/phonegap?

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

Testowałem go na iPod/iPhone i Android (HTC Magic) i to jest bardzo powolny:

Uruchomienie

  • iPhone: 14 sekund
  • Android: 21 sekund

Proste tra strona nsition (zjeżdżalnia)

  • iPhone: 3-4 sekund
  • z Androidem: 4-6 sekund

Jak mogę zrobić to szybko?

Usunąłem już box shadow.

Aktualizacja

usunąć bazę danych, pozostawiając 444.7KB strona Suma. Teraz działa szybciej na Androida. W przybliżeniu tak samo jak jeden iPhone. Nadal wydaje się bardzo powolny.

Aktualizacja 2

Po this question, przeszedłem do latest jquery mobile build. Ulepszono przejścia stron dla wolnych urządzeń z Androidem do ~ 2 sekund na przejście. Wersja 1.1 będzie miała numer mid/late February.

+1

JavaScript bazy danych ?? powinieneś rozważyć udostępnianie danych tylko w razie potrzeby. –

+1

@ stian.net Jak? Zawiera tylko 1800 linii. – PiTheNumber

+1

500kb to prawie wszystko dla aplikacji mobilnej. –

Odpowiedz

11

Istnieje kilka rzeczy, które możesz zrobić:

  1. Get to deviceready faster.
  2. Zminimalizuj kod JS przy użyciu YUI Compressor
  3. Przenieś swoje znaczniki skryptów na dół znacznika body.

Jak już wspomniano, wyłączyłeś bazę danych z równania, które prawdopodobnie trwało większość czasu podczas uruchamiania.

5

Co robisz z jQuery-mobile? Jego wydajność jest bardzo słaba, nigdy nie powinieneś go nazywać większymi wymaganymi elementami. Aby uzyskać szczegółowe informacje, patrz this discussion about jquery-mobile. Wykonuje bardzo dużą liczbę operacji wyszukiwania DOM, ponieważ działa poprzez modyfikację drzewa DOM. Jeśli chodzi o moje testy, działa zbyt wolno, nawet w przeglądarce na komputerze.

+6

Więc rozwiązaniem nie jest użycie jQuery, hm ... ok – PiTheNumber

+2

Korzystanie z jQuery jest w porządku, jQuery-mobile jest przez niektórych uważane za słabo reagujące z PhoneGap. Oto dyskusja na temat przyczyny: http://apachecordova.blogspot.com/2012/11/who-is-murdering-phonegap-its-jquery.html – garromark

+0

Większy niż wymagany, mam na myśli na przykład, nie renderowanie całości lista, jeśli wyświetlona zostanie tylko jej część. Nie chcesz pokazywać użytkownikowi listy rozwijanej zawierającej 100 lub więcej pozycji! Jeśli chcesz, niech to niechciane, przewinie palce do kości! –

4

Spróbuj bez przejść. Nawet z jQuery 1.1, przejścia stron mogą być naprawdę migotliwe i powolne na iPhonie.

Aby usunąć przejścia stron na całym świecie, tylko dodać następujące jqm.glocal.config.js

$(document).bind("mobileinit", function(){ 
    $.mobile.defaultPageTransition="none" 
});