PageSpeed ​​- Ekranın üst kısmındaki içerikte oluşturmayı engelleyen JavaScript ve CSS'yi ortadan kaldırın


15

Ben koşuyorum magento 1.9, ben kullanıyorum RWD sliderana sayfasında Magento 1.9 ile geliyor.

Google'ın PageSpeedbeğenmediği ve şunları söyledi:

Ekranın üst kısmındaki içerikte oluşturmayı engelleyen JavaScript ve CSS'yi ortadan kaldırın

Kaydırıcıyı çağıran bu java komut dosyası için nasıl yapabilirim:

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

Yanıtlar:


14

Aşağıdaki gibi Magento-1.9.x render-engelleme JavaScript sorunu kaldırmak çözmek:

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

veya

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

ipuçları: temel temayı bulabilir

app \ design \ frontend \ base \ default \ layout \ page.xml satır hakkında: 38,

Uygulama teması için rwd için etkin tema farklı bir yol kullanıyorsanız app \ design \ frontend \ base \ default \ layout \ page.xml


Bunu nereye ekliyorsun? hangi magento xml dosyasında?
styzzz

@styzzz, evet ve ayrıca üstbilgi / altbilgi dosyası .its google bulmak daha iyi önerilen bloke js
matinict

@styzz bu temel tema app \ design \ frontend \ base \ default \ layout \ page.xml satır: 38, hakkında bulabilirsiniz. Uygulama teması için rwd için etkin tema farklı bir yol kullanıyorsanız app \ design \ frontend \ base \ default \ layout \ page.xml
19'da

1
Seni takip ettim. Google sayfa
analizindeki

@MDSHOEBMIRZA o zaman sorunu çözmedi
Stevie G

5

"Mohan Gs" tarafından tarif edilen teknik burada çalışmaz.

Js yolu /media/js/nedeniyle js birleştirme kullanıyor gibi görünüyor . Bu, xml standart yolu ile eklenen tüm js dosyalarının olduğu anlamına gelir

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

ile birleştirilecek /media/js/<hash>.js.

Magento core js dosyaları eklendi

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

bu şekilde de.

Ayrıca, kafa js dosyaları tarafından tanımlanan nesnelere / işlevlere bağlı olan satır içi js kullanan birçok şablon vardır.

Bu noktada, sadece head js dosyalarını alta taşımak yeterli değildir. Tüm satır içi js bildirimlerini baş js'den önce ve daha önce </body>taşımalısınız.

Tüm / birçok durumda, satır içi j'leri şablondan ayırmak imkansızdır, çünkü şablona özgü değişkenler kullanırlar.

Yalnızca son html'yi ayrıştırma gibi genel bir yöntem kullanabilir ve bunları birlikte ve doğru sırayla taşıyabilirsiniz.

Pagespeed uzantısına bir göz atın .


Üzgünüm - ne yapacağımı hala anlayamıyorum. Hangi dosyayı düzenlemeliyim? XML dosyalarını düzenlememiz ve JS'yi çağıran satırı farklı bir bölüme taşımamız gerektiğini mi söylüyorsunuz? XML dosyasını düzenleyebilirim, ancak hangisinin ve JS komut dosyası olarak adlandırılan satırın nereye taşınacağından emin değilim. Lütfen bana haber ver.
styzzz

Benim cevabım sen ki, anlatmalı değil farklı bir bölümüne javascript xml aramaları taşıyın. Bu hatalara yol açacaktır. Belirtilen uzantıyı deneyebilirsiniz.
Steven Fritzsche

Merhaba Steven, modülünüzü denedim. Hiçbirşey değişmedi. Hiçbir javascript veya css taşınmadı. Ayrıca admin end Pagespeed yapılandırması 404
Sandeep

@Sandeep: Bu, yorumunuzun yeri değil. Lütfen github'da ayrıntılı bir rapor / sayı oluşturun .
Steven Fritzsche

4

Bu kod, tüm belgenin yüklenmesini bekleyin, ardından harici dosyayı yükleyin diyor 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>

İzlemeniz gereken adımlar bunlar.

  1. Yukarıdaki kodu kopyalayın.

  2. Kodu HTML'nize </body>etiketin hemen önüne yapıştırın (HTML dosyanızın altına yakın).

  3. defer.jsHarici JS dosyanızın adını değiştirin .

  4. Dosyanızın yolunun doğru olduğundan emin olun. Örnek: Az önce koyarsanız defer.js, dosyanın defer.jsHTML dosyanızla aynı klasörde olması gerekir.

Daha fazla ayrıntı için Bu Makaleye Bakın


1

İşte https://github.com/mediarox/pagespeed çözmek için açık kaynak uzantısı

Mevcut özellikler

  • Tüm Javascript etiketlerini (head & inline) altına taşıyın. ({Stripped_html} {js})
  • koşullu js birimleri dahil ({çoklu js etiketleri})
  • harici js etiketleri dahil "satır içi" js etiketleri dahil
  • Tüm CSS etiketlerini (baş ve satır içi) en alta taşıyın. ({Stripped_html} {CSS})
  • koşullu css birimleri dahil ({çoklu css etiketleri})
  • harici css etiketleri dahil
  • satır içi css etiketleri dahil

uygunluk

Magento 1.5.x'ten Magento 1.9.x'e.

Arka Uç Yapılandırması

Tüm modüller (Pagespeed_Js, Pagespeed_Css) varsayılan olarak devre dışıdır.

Yapılandırma yolu: Sistem> Yapılandırma> GELİŞMİŞ> Sayfa Hızı

Nasıl çalışır ?

Basit "html akışı" controller_front_send_response_before "olayında ayrıştırmak.


GitHub'a gittim ve komut dosyasının en son 23 Eylül 2015'te güncellendiğini buldu. Ayrıca Magento 2 hakkında bir söz yok. Magento 2 için çalışır mı, değil mi? Eğer başka tavsiyeleriniz / önerileriniz yoksa?
marikamitsos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.