2015-04-27 19 views
20

Quali sono le differenze in termini di prestazioni e occupazione di memoria, se del caso, in questi diversi approcci:differenza in termini di prestazioni e occupazione di memoria tra riferimento a un Javascript utilizzando src o direttamente iniettarlo nel HEAD

1. Utilizzando Src

<script type='text/javascript" src="1MBOfjavascript.js"></script> 

2. Direttamente l'iniezione nella testa

$('head').append("<script type='text/javascript'>1MBOfJavascriptCode</script>"); 

Sono interessato perché stiamo sviluppando un'applicazione Cordova in cui utilizziamo il secondo metodo per iniettare nel DOM un pacchetto Javascript scaricato precedentemente letto dall'archivio locale HTML.

Dato che lo script probabilmente aumenterà di dimensioni, mi piacerebbe sapere se con il secondo metodo potrei incorrere in alcuni problemi di memoria o altri problemi DOM.

+3

Se hai già il tuo js script nell'archivio locale, perché non lo esegui? Dai un'occhiata qui http://stackoverflow.com/questions/18313770/can-i-store-javascript-in-a-local-storage-object-and-run-it – Matteo

+0

Lo farò uno scatto;) – systempuntoout

+1

solo usa 'eval (localStorage.storedCode)' direttamente invece di chiamare eval() dietro dozzine di altri passaggi tramite la funzione .html() di jQuery. (sì, usa anche eval) – dandavis

risposta

1

Credo che il sovraccarico in questi casi dovrebbe essere insignificante in quanto il consumo di elaborazione/memoria principale si basa su come funziona lo script effettivo. Vale a dire la memoria utilizzata dal file sarebbe la dimensione totale dello script che è ciò che 1 MB al massimo? Tuttavia durante l'esecuzione lo stesso script può utilizzare fino a 100 MB facilmente.

In ogni caso, venendo al punto.

L'inclusione di testo normale sarebbe meglio se dovesse essere inclusa in tutti i casi in quanto ignora l'esecuzione di uno script e inoltre non causa il re-rendering dal browser dopo l'aggiunta. L'opzione di aggiunta deve essere utilizzata nei casi in cui è necessario lo script solo in condizioni specifiche sul lato client e non caricarlo in modo non necessario.

1

Il browser passa prima di tutti gli elementi per il rendering della pagina, quindi immagino che sia esattamente lo stesso, semmai se si disponessero di script dopo il download della pagina è probabile che si verifichino errori del tipo "chiamata a undefined funzioni "se si richiama una funzione che è stata aggiunta dopo il caricamento. Il mio consiglio è di aggiungerli al caricamento usando src ma mantieni le cose in ordine.

0

JavaScript ha un impatto molto in base a come e dove si sta caricando il file, ci sono molti modi per caricare un file o un codice.

Primo metodo lei ha citato è un modo convenzionale per caricare il file Javascipt che è file di caricamento utilizzando src e di solito la sua carica prima di chiudere </head> tag, ma ora un giorno si è in tendenza per caricare file di befor il tag </body>. velocizza il carico dell'applicazione e prepara DOM più velocemente.

secondo metodo non è, ovviamente, un buon modo per caricare javascript in un primo momento, come non ci può essere un codice che dovrebbe funzionare solo dopo DOM è pronto e, come qui si sta caricando il vostro javscript con javascript/jquery append che dipende dalla vostra jquery caricamento del file che ritarderà l'esecuzione del codice. e potrebbe essere possibile che parte del tuo codice non abbia l'output desiderato (a seconda di come hai chiamato le funzioni e quanto dipendono dal DOM pronto)

Preferirei caricare un file javascript con il primo metodo e in il fondo della pagina/app se possibile.

asyncrounous caricamento può anche essere provato.

0

penso perché il comportamento del browser dopo aver recuperato la risposta da qualsiasi server Web proverà ad analizzare prima tutti gli elementi per la creazione del DOm, dopo che i DOM sono pronti, lo script verrà eseguito, in base a ciò è ovvio che sia il principale è ragioni è che è il primo verrà eseguito prima di iniettarlo. Informazioni sul secondo metodo Penso che il motore javascript in ciascun browser sia in grado di gestire facilmente e senza problemi. il motore non si preoccupa delle dimensioni in realtà solo per quanto tempo lo script verrà caricato e quindi eseguito. quale sarà il problema è quando provate a iniettare qualsiasi elemento in DOM quando tentate di farlo in loop potrebbe esserci un problema di memoria.

quando dici grandi file javascript sì, dovremmo pensare alla memoria. ma sul metodo che hai precedentemente detto è relativo a quali sono stati eseguiti per primi. questa è la mia opinione