2010-06-08 3 views
8

Voici une liste de tous les scripts chargés par Magento par défaut:Tous les scripts par défaut chargés par Magento sont-ils vraiment nécessaires?

../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 

ces scripts au total 316.8K de javascript ... dans divers états d'être minified (par exemple, prototype.js n'est pas minified).

Ma première question:

1) En plus de prototype.js, sont tous les autres vraiment nécessaires?

et

2) Quelle est la "bonne" pour supprimer ces scripts? Mises à jour de mise en page? Ou codé en dur dans des modèles?

Je veux rendre le chargement de mon site magento aussi léger que possible.

merci!

+0

Magento: Extension Pro, élégante et légère! Présenté par JoomlArt.com. Vous voulez le rendre encore plus Leightweight? :) – Younes

+0

Comme une optimisation triviale, minify prototype.js :) –

+0

Je me demandais la même chose, j'essaie d'accélérer mon site. Je viens d'activer gzip et mes tailles de fichiers javascript réduits de 70%. – dardub

Répondre

5

Pour répondre à la partie 1 - ne pas tous ces éléments sont nécessaires, mais la plupart sont et cela dépend de votre thème. Un thème magento par défaut les utilise tous, mais un thème personnalisé n'aura presque certainement pas besoin de tous les scripts. Le varien, le mage et le prototype seront presque toujours nécessaires, la création d'un thème qui supprime tout cela est très, très difficile car une partie du javascript dans la page qui en dépend ne vient pas du thème mais à partir des fichiers php de base.

Sur des thèmes simples, j'ai eu de bons résultats en supprimant le dragdrop et le curseur car je n'utilise pas l'affichage du zoom du produit. Vous pouvez supprimer le menu si vous n'utilisez pas le menu Magento, mais seulement si vous êtes prêt à faire des fonctions js factice pour attraper tous les appels qui y sont laissés - l'objet de navigation menu injecte la fonction javascript directement à partir de la couche php qui doit être attrapé (ou mieux encore vous pouvez rouler votre propre objet de navigation de catégorie qui ne fait pas cela!).

pour la partie 2 - modifier vos thèmes page.xml mise en page pour les supprimer de la balise <block type="page/html_head" name="head" as="head"> . Je suggère de les commenter et de tester chacun d'eux au fur et à mesure.

Vous pouvez injecter les fichiers javascript requis dans les types de pages qui en ont besoin en ajoutant des balises javascript à la section head des fichiers de mise en page appropriés. Comme un exemple de la façon dont cela est fait jeter un oeil à l'sendfriend par défaut.Fichier de mise en page XML qui ajoute le fichier product.js à la tête uniquement pour les pages qui en ont besoin.

Si vous commencez à ajouter/supprimer agressivement du javascript en fonction du type de page, vous devez également considérer comment Magento fusionne les fichiers javascript. Il y a un paramètre dans la zone de développement des écrans de configuration pour fusionner les fichiers javascript, activer ceci est une très bonne chose. Ceci fusionne tous les fichiers javascript dans la zone d'en-tête qui ont été injectés en utilisant "addJs" ou "addItem" avec un type d'élément "js" ou "skin_js". MAIS à cause de cela, si vous commencez à inclure/exclure des scripts page par page, vous trouverez que vous générez différents fichiers js fusionnés sur des pages différentes - détruisant la plupart des avantages de la mise en cache d'un seul grand fichier js ! Pour obtenir le meilleur des deux mondes, vous devriez pouvoir injecter js dans la tête en utilisant mais sans spécifier le type d'élément, empêchant ainsi la fusion de ce fichier - mais je ne l'ai pas encore essayé. Si cela fonctionne, vous trouverez les bibliothèques de base fusionnées et vos fichiers personnalisés par page inclus individuellement, ce qui signifie que vous mettez en cache le grand et ils ne téléchargent que le bit qui change.

1

Je ne peux pas dire à quoi ils servent, mais je sais que la plupart d'entre eux sont nécessaires, car Magento utilise allot de JS. Cela ne répond pas à votre question mais vous pouvez en minimiser les effets avec Magento 1.4.01 (probablement aussi dans 1.4.0) en allant dans System -> Config -> Advanced -> Developer -> JavaScript, puis fusionner les tous si vous avez seulement une requête HTTP (même chose peut être fait avec CSS).

Je suppose que la façon la plus correcte de les supprimer serait de créer un nouveau thème qui n'en a pas besoin et de ne pas les inclure car ils ne seraient pas nécessaires, donc en réponse à la question 2 je dirais les modèles seraient certainement la voie à suivre. Je ne me souviens pas le modèle exact qui contrôle cela, mais je suis sûr que je l'ai vu un qui a une grande liste de JS/CSS comprend

+0

JS est souvent défini dans les fichiers page.xml (ou autres fichiers layout.xml). +1 sur ces fichiers étant généralement nécessaire pour faire fonctionner le site, bien que tous les scripts ne soient pas utilisés sur chaque page. –

+0

@Joseph Mastey-ya, bien qu'ils ne soient pas nécessaires sur chaque page, je trouve juste un tel gaspillage d'inclure 3 bibliothèques d'interface utilisateur différentes juste pour faire un menu déroulant. – pxl

+0

fusionner des fichiers JS masque le problème, mais je suis intéressé à résoudre le problème. Je suis bien avec l'utilisation de prototype, donc ce n'est pas un "comment puis-je utiliser jquery avec magento" post. Et je vais bien créer des mises à jour de mise en page par page pour inclure uniquement les js nécessaires. Je n'aime tout simplement pas inclure des ressources qui ne sont que très peu utilisées. – pxl

Questions connexes