2010-07-18 2 views
13

mio sito web ha uno script jQuery (da Shadow animation jQuery plugin), che cambia costantemente il colore della scatola di ombra di vari <div> s sulla home page.funzione di disattivare JavaScript in base alle prestazioni del computer dell'utente

L'animazione non è essenziale, ma richiede molto tempo di CPU su macchine più lente.

È possibile sapere se lo script verrà eseguito "troppo lentamente"? Posso quindi disabilitarlo prima che incida sulle prestazioni.

Questa è anche una buona idea? In caso contrario, c'è un modo semplice per suddividere il jQuery animato?

+6

Se c'è qualche consolazione, sembra carino. – Metalshark

+2

Non sono un esperto di javascript, ma la mia ipotesi è "non facilmente". (Ho iniziato a pensare a un'idea simile di recente.) Finora, il mio miglior suggerimento potrebbe essere quello di aggiungere il proprio monitoraggio delle prestazioni tramite l'oggetto Date. Prendi un campione ogni tanto e se la differenza supera qualche soglia, interrompi lo script dall'effettuare l'animazione. Ma vedremo se qualcuno ha un suggerimento più corretto!:) – mjschultz

+0

+1 prendere in considerazione le prestazioni di rendering del client è una grande idea. –

risposta

7

Questo può risolvere indirettamente il problema. Scegli alcuni algoritmi e test delle prestazioni da questo sito http://dromaeo.com/ che sembrano simili al tuo plugin jQuery. Non eseguire test completi come fanno sul sito. Invece, scegli algoritmi abbastanza piccoli e veloci, e eseguili per un periodo di tempo trascurabile.

Utilizzare un intervallo di tempo predefinito per limitare il tempo di esecuzione di questi test. Diciamo che se l'intervallo è di 200 ms e su una macchina veloce con il browser A, puoi ottenere 100 iterazioni, mentre su una macchina di un utente casuale, è in grado di completare solo 5 iterazioni, quindi potresti prendere in considerazione la disattivazione sull'utente macchina. Tweak e tweak fino a trovare i numeri ottimali.

Come bonus, inviare tutti i risultati del test al server in modo da avere un'idea migliore di dove gli utenti si trovano nello spettro di velocità. Se la maggior parte degli utenti utilizza computer più lenti e browser meno recenti, può essere logico rimuoverli completamente.

+2

puoi spiegare dove trovare il codice sorgente per i test? – IgalSt

6

Probabilmente è possibile farlo un po 'di volte attorno a un ciclo che ha elaborato intensamente il caricamento della pagina, ma questo rallenterà la pagina e aumenterà ulteriormente il carico della CPU, quindi non sembra un grande soluzione.

Un compromesso che ho usato in passato, però, era prendere una decisione in base alla versione del browser, ad esempio, gli utenti di Internet Explorer 6 ottengono contenuti più semplici mentre i nuovi browser con prestazioni JavaScript migliori ottengono l'animazione. Sembrava funzionare abbastanza bene a livello pratico. In pratica, la scelta del browser è un fattore importante nelle prestazioni di JavaScript e potresti ottenere un 90% di adattamento con ciò che desideri semplicemente semplicemente tenendo conto di ciò.

+0

Tuttavia, la seconda idea non sarà in grado di controllare le prestazioni del computer ... Infatti, molti proprietari di computer veloci utilizzano il software lento solo perché non possono notare che è lento. – mbq

+0

Buona idea, ma questo plugin funziona solo nei nuovi browser. – Pointy

+0

Buona idea. Non ho dati, ma sono disposto a scommettere che gli utenti che eseguono IE6 hanno più probabilità di avere computer meno potenti di quelli che eseguono Chrome (ad esempio) –

1

Si potrebbe fare qualcosa come $(window).width() per ottenere la larghezza del browser. Usando questo si può ipotizzare che tutto ciò che è largo a < 1024px sia un netbook, uno smartphone o un vecchio computer.

Questo non sarebbe accurato quanto un ciclo, ma molto più efficiente.

Ovviamente questa regola è una generalizzazione e ci saranno computer lenti con> 1024px. Ma in generale un computer 1024px + è in genere in grado di gestire un bel po 'di javascript (fino a quando il proprietario non carica un sacco di software, scansioni antivirus e barre degli strumenti del browser!)

spero che questo sia utile!