2010-06-08 26 views
8

Ecco un elenco di tutti gli script caricati da Magento per impostazione predefinita:Sono davvero necessari tutti gli script predefiniti caricati da Magento?

../js/prototype/prototype.js //prototype library 
../js/prototype/validation.js //don't know what this does 
../js/scriptaculous/builder.js //don't know what this does 
../js/scriptaculous/effects.js //base scriptaculous effects library? 
../js/scriptaculous/dragdrop.js //component of scriptaculous effects 
../js/scriptaculous/controls.js //not sure? 
../js/scriptaculous/slider.js //more scriptaculous effects 
../js/varien/js.js   //don't know what this is 
../js/varien/form.js  //form validation scripts? 
../js/varien/menu.js  //menu/drop down menu scripts 
../js/mage/translate.js  //don't know what this does 
../js/mage/cookies.js  //don't know what this does 

questi script totali 316.8K di javascript ... il tutto in vari stati di essere minified (ad esempio, non è prototype.js minified).

Quindi la mia prima domanda:

1) A parte prototype.js, sono tutti gli altri davvero così necessario?

e

2) Qual è il modo "corretto" per rimuovere questi script? Aggiornamenti del layout? O hardcoded in modelli?

Desidero rendere il caricamento del mio sito Magento il più leggero possibile.

grazie!

+0

Estensione Magento: Pro, elegante e leggera! Offerto da JoomlArt.com. Vuoi renderlo ancora più leggero? :) – Younes

+0

Come ottimizzazione trivial, minify prototype.js :) –

+0

Mi stavo chiedendo lo stesso, sto cercando di velocizzare il mio sito. Ho appena abilitato gzip e le mie dimensioni del file javascript ridotte del 70%. – dardub

risposta

5

Per rispondere Parte 1 - no, non tutti questi sono necessari, ma la maggior parte lo sono e dipende dal tuo tema. Un tema Magento predefinito li usa tutti, ma uno personalizzato quasi certamente non avrà bisogno di tutti gli scriptaculous.

I vari tipi, mage e prototipi saranno quasi sempre richiesti, creando un tema che elimina tutti questi è molto, molto, difficile perché parte della pagina in javascript che dipende da loro in realtà non proviene dal tema ma dai file php di base.

Su temi semplici Ho ottenuto buoni risultati rimuovendo dragdrop e slider poiché non utilizzo la visualizzazione zoom del prodotto. È possibile rimuovere il menu se non si utilizza il menu Magento, ma solo se si è pronti a fare funzioni dummy js per catturare le eventuali chiamate lasciate indietro - l'oggetto di navigazione del menu inietta la funzione javascript direttamente dal livello php che deve essere catturato (o meglio ancora puoi lanciare il tuo oggetto di navigazione categoria che non lo fa!).

Per Parte 2 - modificare i tuoi temi page.xml layout per rimuoverli dal tag <block type="page/html_head" name="head" as="head"> . Suggerisco di commentarli e testarli singolarmente.

È possibile inserire i file javascript richiesti nei tipi di pagina che ne hanno bisogno aggiungendo tag javascript alla sezione head dei file di layout appropriati. Come esempio di come è fatto, dai un'occhiata al sendfriend predefinito.file di layout xml che aggiunge il file product.js alla testa solo per le pagine che ne hanno bisogno.

Se si inizia ad aggiungere/rimuovere javascript in modo aggressivo in base al tipo di pagina, è necessario considerare anche come Magento unisce i file javascript. C'è un'impostazione nell'area di sviluppo delle schermate di configurazione per unire i file javascript, accenderlo è un'ottima cosa. Unisce tutti i file javascript nell'area della testa che sono stati iniettati usando "addJs" o "addItem" con un tipo di elemento "js" o "skin_js".

MA a causa di questo se inizi a includere/escludendo script su una pagina per pagina, scoprirai che stai generando diversi file js uniti su pagine diverse, distruggendo la maggior parte dei vantaggi della memorizzazione nella cache di un singolo file js di grandi dimensioni !

Per ottenere il meglio da entrambi i mondi si dovrebbe essere in grado di iniettare js in testa usando ma senza specificare il tipo di elemento, impedendo così che il file venga unito - ma non l'ho ancora provato. Se funziona, troverai le librerie principali unite e i file personalizzati per pagina inclusi singolarmente, il che significa che memorizzi nella cache quello più grande e scaricano solo il bit che cambia.

1

Non posso dire quello che sono tutti, ma so che molti di loro sono necessari fastidiosamente come Magento utilizza l'assegnazione di JS.

Questo non risponde alla tua domanda ma puoi minimizzare il loro effetto con Magento 1.4.01 (probabilmente anche in 1.4.0) andando in Sistema -> Config -> Avanzate -> Sviluppatore -> Impostazioni JavaScript e quindi unisci tutti così hai solo una richiesta HTTP (lo stesso può essere fatto con i CSS).

Direi che il modo "più corretto" per rimuoverli sarebbe creare un nuovo tema che non ne ha bisogno e non includerli in quanto non sarebbero necessari, quindi in risposta alla domanda 2 direi i modelli sarebbero sicuramente la strada da seguire. Non riesco a ricordare il modello esatto che controlla questo, ma sono sicuro che ho visto uno che ha una grande lista di JS/CSS include

+0

JS è spesso definito all'interno dei file page.xml (o altri file layout.xml). +1 su quei file che sono generalmente necessari per far funzionare il sito, anche se non tutti gli script sono usati in ogni pagina. –

+0

@Joseph Mastey - ya, anche se non sono necessari in ogni pagina, trovo semplicemente un enorme spreco includere 3 diverse librerie UI solo per fare un menu a tendina. – pxl

+0

l'unione di file JS maschera il problema, ma sono interessato a risolvere il problema. Sto bene con l'utilizzo del prototipo, quindi questo non è un post di "come faccio a usare jquery con Magento". E sto bene con la creazione di aggiornamenti di layout per pagina per includere solo i js necessari. Semplicemente non mi piace includere risorse che vengono utilizzate solo in minima parte. – pxl

Problemi correlati