Movable Type [2.6.x] : externalisez vos javascripts
Sur chaque entrée individuelle, les javascripts du gabarit par défaut de Movable Type alourdissent inutilement votre code.
Par exemple, j’ai 2 295 octets de javascript pour gérer les cookies du formulaire de commentaires sur chaque page d’archive. Pour 100 billets, cela représente 229 500 octets, soit 224 Ko de code. 224 Ko d’inutilement perdus sur votre espace Web, sans parler de Mo de bande passante…
La solution pour arrêter cette gabegie est très simple :
- copiez tout le code javascript figurant dans l’en-tête (head) du gabarit des archives individuelles et collez le dans un document texte,
- enregistrez ce fichier texte sous le nom javascript.js (par exemple),
- téléchargez ce fichier sur la racine de votre espace Web (en mode ascii),
- enlevez tout le code javascript figurant dans l’en-tête (head) du gabarit des archives individuelles et remplacez le par cette ligne :
<script type="text/javascript" src="http://adresse_de_mon_blogue.com/javascript.js"></script>
Faites un “rebuild” des archives individuelles, et voilà ! Ça marche comme avant, mais de manière plus élégante et économique, et votre gabarit dans cette forme plus compacte est plus facile à lire.
TDD
Je vois bien ta démarche, et Dieu sait que nous (Blog out et moi-même) avons la même démangeaison permanente avec MT. Outre la conformité W3C, nous ajoutons régulièrement notre sauce (scripts additionnels, styles alternatifs…) Hélas, c’est d’autant plus de précautions quand on met à jour MT lui-même…
a
Vous pouvez même écrire
.script type=”text/javascript” src=”javascript.js”. ./script.
garoo
Dans la mesure où getCookie est appelé directement dans la page (au lieu d’être dans le onLoad), ça a des chances de faire une erreur Javascript la première fois qu’on charge la page, parce que l’appel est lu avant que le script soit chargé. Non ?
D’ailleurs, du Javascript en plein milieu de la page, est-ce bien valide ? :o)
Laurent
Il semblerait que le navigateur se fasse une obligation de charger les scripts externes appelés dans le header avant de traiter ceux contenus dans le body. Ce qui parait logique. Donc pas d’erreur à priori.
Blah ?