2012-01-25 17 views
15

Tengo una pequeña aplicación web. Siete páginas, 3.6 KB index.html y 855.5 KB total. Lo único extraño que tengo es una base de datos (~ 500 kb) en Javascript con muchas líneas como:¿Cómo acelerar jquery mobile/phonegap?

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

he comprobado en el iPod/iPhone y Android (HTC Magic) y es muy lento:

De inicio

  • iPhone: 14 segundos
  • Android: 21 segundos

tra simple página nsition (diapositivas)

  • iPhone: 3-4 segundos
  • Android: 4-6 segundos

¿Cómo puedo hacer esto rápido?

Ya eliminé el box shadow.

actualización

me quite la base de datos dejando 444.7KB total de páginas. Ahora funciona más rápido en Android. Casi lo mismo que un iPhone. Todavía se siente muy lento.

Actualización 2

Después this question, me cambié a la latest jquery mobile build. Mejoró las transiciones de página para dispositivos Android lentos a ~ 2 segundos por transición. La versión de la versión 1.1 será mid/late February.

+1

Javascript a la base de datos ?? debe considerar solo servir datos según sea necesario. –

+1

@ stian.net ¿Cómo? Contiene solo 1800 líneas. – PiTheNumber

+1

500kb es más o menos para una aplicación móvil ... –

Respuesta

11

Hay algunas cosas que puede hacer:

  1. Get to deviceready faster.
  2. Minimice su código JS utilizando YUI Compressor
  3. Mueva las etiquetas de secuencia de comandos a la parte inferior de la etiqueta de cuerpo.

Como ya ha mencionado, ha movido la base de datos fuera de la ecuación, que probablemente se estaba tomando la mayor parte del tiempo en el inicio.

5

¿Qué hace con jQuery-mobile? Su rendimiento es muy pobre, nunca debes llamarlo por elementos más grandes que los requeridos. Vea this discussion about jquery-mobile para más detalles. Está realizando una gran cantidad de operaciones de búsqueda DOM porque funciona modificando el árbol DOM. En cuanto a mis pruebas, funciona demasiado lento incluso en el navegador de escritorio.

+6

Así que la solución no es usar jQuery, hm ... ok – PiTheNumber

+2

El uso de jQuery está bien, jQuery-mobile específicamente es considerado por algunos como una reacción pobre con PhoneGap. Aquí hay una discusión de por qué: http://apachecordova.blogspot.com/2012/11/who-is-murdering-phonegap-its-jquery.html – garromark

+0

Por más grande de lo requerido, quise decir, por ejemplo, no renderizar el todo lista si solo se mostrará una parte de ella. ¡No desea mostrarle al usuario un menú desplegable que tiene 100 o más posiciones! Si lo desea, por favor, ¡deslizará sus dedos hasta el hueso! –

4

Prueba sin transiciones. Incluso con jQuery 1.1, las transiciones de página pueden ser muy lentas y lentas en un iPhone.

a la caída de las transiciones de página a nivel mundial, sólo tiene que añadir lo siguiente a jqm.glocal.config.js

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