PageSpeed ​​- Elimine JavaScript e CSS de bloqueio de renderização no conteúdo acima da borda

15

Estou executando magento 1.9e usando o RWD sliderque acompanha o Magento 1.9 na página inicial.

O Google PageSpeednão gosta disso e diz:

Eliminar JavaScript e CSS de bloqueio de renderização no conteúdo acima da borda

Como posso fazer isso para este arquivo de script java que chama o controle deslizante:

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

Respostas:

14

Resolvo o problema de Remover o bloqueio de renderização JavaScript no Magento-1.9.x da seguinte maneira:

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

ou

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

dicas: ele pode localizar no tema base

app \ design \ frontend \ base \ default \ layout \ page.xml sobre a linha: 38,

Se você usar o caminho diferente do tema ativo ex para rwd como app \ design \ frontend \ base \ default \ layout \ page.xml

matinict
fonte
Onde você adiciona isso? em qual arquivo xml magento?
styzzz
@styzzz, sim e também .Seu arquivo de cabeçalho / rodapé melhores para encontrar o Google js bloqueados sugeridas
matinict
@styzz ele localiza no tema base app \ design \ frontend \ base \ default \ layout \ page.xml sobre a linha: 38 ,. Se você usar o ativo tema diferente caminho ex para rwd como app \ projeto \ frontend \ Base \ default \ layout \ page.xml
matinict
11
Segui você. Ele resolve o problema de página de visão do Google, mas ele está dando muitos erros no Console no Google Chrome
Shoeb Mirza
@MDSHOEBMIRZA, então não resolveu o problema #
Stevie G
5

A técnica descrita por "Mohan Gs" não funcionará aqui.

Por causa do caminho js /media/js/, parece que ele usa a fusão js . Isso significa que todos os arquivos js adicionados pela maneira padrão xml

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

será mesclado em um grande problema para /media/js/<hash>.js.

Magento core js arquivos são adicionados

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

por aqui também.

Existem também muitos modelos usando js embutidos, que dependem de objetos / funções definidos pelos arquivos js principais.

Nesse ponto, não basta mover apenas os arquivos head js para a parte inferior. Você deve mover todas as declarações js embutidas após o cabeçalho js e antes </body>também.

Em todos / muitos casos, é impossível separar js embutidos dos modelos porque eles estão usando variáveis ​​específicas do modelo.

Você só pode usar um método geral, como analisar o html final e mover essas coisas juntas e na ordem correta.

Então dê uma olhada na extensão Pagespeed .

Steven Fritzsche
fonte
Sinto muito - ainda não consigo descobrir o que fazer. Qual arquivo devo editar? Você está dizendo que devemos editar os arquivos XML e mover a linha que chama o JS para uma seção diferente? Posso editar o arquivo XML, mas não tenho certeza qual deles e para onde mover a linha que chamou o script JS. Por favor deixe-me saber.
Styzzz # 22/15
Minha resposta deve explicar que você não pode mover as chamadas javascript xml para uma seção diferente. Isso levará a erros. Você pode tentar a extensão mencionada.
Steven Fritzsche
Oi Steven, eu tentei o seu módulo. Nada mudou. Nenhum javascript ou css foram movidos. Também a configuração PageSpeed fim administrador está mostrando 404
Sandeep
@ Sandeep: Este não é o lugar para o seu comentário. Crie um relatório / problema detalhado no github .
Steven Fritzsche
4

Este código diz esperar por todo o documento com a carga, em seguida, carregar o arquivo 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>

Estes são os passos que você precisa seguir.

  1. Copie o código acima.

  2. Cole o código no seu HTML logo antes da </body>tag (próximo à parte inferior do seu arquivo HTML).

  3. Mude defer.jspara o nome do seu arquivo JS externo.

  4. Verifique se o caminho para o seu arquivo está correto. Exemplo: se você acabou de colocar defer.js, o arquivo defer.jsdeve estar na mesma pasta que o seu arquivo HTML.

Para mais detalhes, consulte este artigo

Mohan Gs
fonte
1

Aqui está a extensão de código aberto para resolver que https://github.com/mediarox/pagespeed

Recursos atuais

  • Mova todas as tags Javascript (cabeça e linha) para baixo. ({stripped_html} {js})
  • incluindo unidades js condicionais ({multiple js tags})
  • incluindo tags js externas, incluindo tags js "inline"
  • Mova todas as tags CSS (head & inline) para baixo. ({stripped_html} {css})
  • incluindo unidades css condicionais ({multiple css tags})
  • incluindo tags CSS externas
  • incluindo tags CSS embutidas

Compatibilidade

Do Magento 1.5.x para o Magento 1.9.x.

Configuração de back-end

Todos os módulos (Pagespeed_Js, Pagespeed_Css) estão desativados por padrão.

Caminho da configuração: Sistema> Configuração> AVANÇADO> Velocidade da página

Como funciona ?

Simplesmente analise o fluxo html final no evento "controller_front_send_response_before".

FireBear
fonte
Foi até o GitHub e descobriu que o script foi atualizado pela última vez em 23 de setembro de 2015. Além disso, não há menção sobre o Magento 2. Funcionaria no Magento 2 ou não? Caso contrário, você tem outras recomendações / sugestões?
Marikamitsos 16/05