3 minutos de lectura ( 532 palabras)

Reduce el peso de tu sitio Joomla cargando Mootools desde Google

Reduce el peso de tu sitio Joomla cargando Mootools desde Google

Mootools es una librería Javascript que viene integrada en el núcleo de Joomla desde sus primeras versiones. Su cometido es facilitar el trabajo con Javascript, añadiendo nuevas funcionalidades a este conocido lenguaje de programación.

Debido a su integración, Mootools esta presente en multitud de componentes y modulos de Joomla, lo que también presenta algunos inconvenientes, como:

  • Hace la pagina mas pesada de lo necesario, sobre todo si la web es tan simple como para no requerirlo o si usamos otro framework como Jquery.
  • Los archivos que lo componen estan cargados de forma casi permanente y desactivarlos o borrarlos podría comprometer seriamente la estabilidad de la web.

Una solución intermedia para reducir peso sin perder funcionalidades seria desactivar Mootools desde nuestra plantilla, y cargarlo via Google CDN como muestro a continuación:

<?php
unset($this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
$this->_scripts[$this->baseurl.'/media/system/js/core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/caption.js']);
$this->addScript('https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js');
?>

La librería cargada desde Google nos aportaría aproximadamente unos 30kb, frente a los 300kb que llegan a sumar todos los archivos de Mootools, sin embargo, hay algunas cuestiones que deberíamos tener en cuenta antes de usar esta opción para aligerar nuestra página.

Cuestiones a tener en cuenta

En la CDN de Google no esta incluido Mootools-more.js, por lo que si tenemos componentes que lo usen tendremos que plantearnos, o bien comentar esa línea en el código expuesto arriba, o bien dejar que se cargue todo Mootools en la página de nuestra web donde se muestre dicho componente. Para excluir una página en concreto (o menu en Joomla) podemos añadir un condicional al código anterior tal que así:

$app = JFactory::getApplication();
$menu = $app->getMenu()->getActive();
$activeId = $menu->id;
if ($activeId != 109){
    unset($this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'],
    $this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
    $this->_scripts[$this->baseurl.'/media/system/js/core.js'],
    $this->_scripts[$this->baseurl.'/media/system/js/caption.js']);
    $this->addScript('https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js');
}

La id se puede sacar del gestor de menús o de la barra de navegación si no tenemos activadas las url amigables.

Al cargar Mootools desde la plantilla es posible que lo haga por detrás de archivos que lo usan y que si se cargan antes no van a funcionar, ni ellos ni los componentes a los que pertenecen. Para solucionar esto, tendremos que localizar las líneas donde se añaden esos scripts dentro del componente correspondiente, e intentar que se ejecuten más tarde. En Joomla podemos usar el método “addCustomTag”, que siempre los añade al final del head:

$document = JFactory::getDocument();
$document->addCustomTag('<script src="'.JURI::root().'/components/com_componentequesea/js/script.js" type="text/javascript"></script>');


La descarga desde Google también se puede realizar en paralelo, es decir, de forma asíncrona, ahora bien, y volviendo al punto anterior, mucho ojo con el orden en que se cargan los sripts. Si cargamos Mootools de forma asíncrona es muy posible se acabe ejecutando por detrás de otros scripts que lo usen. Como ya escribiera con anterioridad, para cargar scripts de forma asíncrona en Joomla podemos usar el siguiente código:

$this->addScript('https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js', 'text/javascript" defer="false" async="true');


Conclusión

Con Joomla se pueden realizar muchos tipos de paginas diferentes, y cada una es un mundo aparte, por lo que las técnicas que funcionan para una, puede que sean contraproducentes para otra y viceversa. Con este artículo he mostrado algunas ideas, pero es trabajo de cada cual, ir probando hasta alcanzar un equilibrio perfecto entre consumo de recursos y funcionamiento.

0
Algunos consejos para el SEO en Joomla 3.0
Resultado de "Tu extensión favorita" Febrero
 

Comentarios

¿Ya està registrado? Ingresa Aquí
No hay comentarios por el momento. Sé el primero en enviar un comentario.

By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/