PageSpeed: elimine JavaScript y CSS que bloquean el procesamiento en el contenido de la mitad superior de la página


15

Estoy corriendo magento 1.9y estoy usando el RWD sliderque viene con Magento 1.9 en la página de inicio.

A Google PageSpeedno le gusta esto y dice:

Elimine JavaScript y CSS que bloquean el procesamiento en el contenido de la mitad superior de la página

¿Cómo puedo hacerlo para este archivo de script java que llama al control deslizante:

http://www.MYDOMAIN/media/js/sdhfksjfhdsjvbskj8e4w.js

Respuestas:


14

Resuelvo el problema Eliminar JavaScript que bloquea el procesamiento en Magento-1.9.x de la siguiente manera:

<script src="filename.js"></script>
Replace with Following:  
<script src="filename.js" defer></script>
<script src="filename.js" async="async"></script>

o

<action method="addJs"><script>prototype/prototype.js</script></action>  
Replace with Following:  
<action method="addJs"><script>prototype/prototype.js</script><params>defer</params></action>  
<action method="addJs"><script>prototype/prototype.js</script><params>async</params></action>

consejos: puede ubicarse en el tema base

app \ design \ frontend \ base \ default \ layout \ page.xml sobre la línea: 38,

Si usa una ruta diferente del tema activo, por ejemplo, para rwd como app \ design \ frontend \ base \ default \ layout \ page.xml


¿Dónde agregas eso? en que archivo magento xml?
styzzz

@styzzz, sí y también el archivo de encabezado / pie de página. Es mejor encontrar google sugerido js bloqueado
matinict

@styzz se encuentra en la aplicación del tema base \ design \ frontend \ base \ default \ layout \ page.xml sobre la línea: 38 ,. Si utiliza una ruta diferente del tema activo, por ejemplo, para rwd como app \ design \ frontend \ base \ default \ layout \ page.xml
matinict

1
Te seguí. Resuelve el problema en la información de la página de Google, pero está dando muchos errores en la consola en Google Chrome
Shoeb Mirza

@MDSHOEBMIRZA entonces no resolvió el problema
Stevie G

5

La técnica descrita por "Mohan Gs" no funcionará aquí.

Debido a la ruta js /media/js/, parece que usa la fusión js . Eso significa que todos los archivos js agregados por xml de forma estándar

  • <action method="addJs">...
  • <action method="addItem"><type>js</type>..

se fusionará en uno grande para /media/js/<hash>.js.

Se agregan archivos Magento core js

  • <action method="addJs"><script>prototype/prototype.js</script></action>

De esta manera, también.

También hay muchas plantillas que usan js en línea, que depende de los objetos / funciones definidos por los archivos head js.

En este punto, ¿no es suficiente mover solo los archivos head js a la parte inferior? Debe mover todas las declaraciones js en línea después del encabezado js y antes </body>también.

En todos / muchos casos es imposible separar js en línea de las plantillas porque están usando variables específicas de plantilla.

Solo puede usar un método general como analizar el html final y mover estas cosas juntas y en el orden correcto.

Así que eche un vistazo a la extensión Pagespeed .


Lo siento, todavía no puedo entender qué hacer. ¿Qué archivo debo editar? ¿Está diciendo que deberíamos editar los archivos XML y mover la línea que llama al JS a una sección diferente? Puedo editar el archivo XML, pero no estoy seguro de cuál y dónde mover la línea que llamó al script JS. Por favor hagamelo saber.
styzzz

Mi respuesta debe explicar, que puede no mover las llamadas xml javascript a una sección diferente. Esto conducirá a errores. Puedes probar la extensión mencionada.
Steven Fritzsche

Hola Steven, probé tu módulo. Nada ha cambiado. No se movieron javascript o css. También la configuración de final de página de velocidad de administrador muestra 404
Sandeep

@Sandeep: este no es el lugar para tu comentario. Cree un informe / problema detallado en github .
Steven Fritzsche

4

Este código dice que espere a que se cargue todo el documento, luego cargue el archivo externo defer.js.

<script type="text/javascript">
    function downloadJSAtOnload() {
        var element = document.createElement("script");
        element.src = "defer.js";
        document.body.appendChild(element);
    }
    if (window.addEventListener)
        window.addEventListener("load", downloadJSAtOnload, false);
    else if (window.attachEvent)
        window.attachEvent("onload", downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
</script>

Estos son los pasos que debe seguir.

  1. Copia el código anterior.

  2. Pegue el código en su HTML justo antes de la </body>etiqueta (cerca de la parte inferior de su archivo HTML).

  3. Cambie el defer.jsnombre de su archivo JS externo.

  4. Asegúrese de que la ruta a su archivo sea correcta. Ejemplo: si solo coloca defer.js, el archivo defer.jsdebe estar en la misma carpeta que su archivo HTML.

Para más detalles, consulte este artículo


1

Aquí hay una extensión de código abierto para resolver que https://github.com/mediarox/pagespeed

Características actuales

  • Mueva todas las etiquetas Javascript (cabeza e inline) hacia abajo. ({stripped_html} {js})
  • incluidas las unidades js condicionales ({múltiples etiquetas js})
  • incluidas las etiquetas js externas, incluidas las etiquetas js "en línea"
  • Mueva todas las etiquetas CSS (cabeza e inline) hacia abajo. ({stripped_html} {css})
  • incluidas las unidades condicionales css ({múltiples etiquetas css})
  • incluidas las etiquetas css externas
  • incluyendo etiquetas CSS en línea

Compatibilidad

De Magento 1.5.x a Magento 1.9.x.

Configuración de backend

Todos los módulos (Pagespeed_Js, Pagespeed_Css) están deshabilitados de forma predeterminada.

Ruta de configuración: Sistema> Configuración> AVANZADO> Velocidad de página

Cómo funciona ?

Analice la secuencia html final en el evento "controller_front_send_response_before".


Fui a GitHub y descubrí que la secuencia de comandos se actualizó por última vez el 23 de septiembre de 2015. Además, no se menciona a Magento 2. ¿Funcionaría para magento 2 o no? Si no tiene alguna otra recomendación / sugerencia?
marikamitsos
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.