पेजस्पीड - ऊपर दी गई सामग्री में जावास्क्रिप्ट और सीएसएस को रेंडर-ब्लॉक करना समाप्त करें


15

मैं भाग रहा हूं magento 1.9, और मैं RWD sliderहोम पेज पर मैगेंटो 1.9 के साथ आने वाले का उपयोग कर रहा हूं ।

Google PageSpeedको यह पसंद नहीं है और कहता है:

उपरोक्त सामग्री में जावास्क्रिप्ट और सीएसएस को रेंडर-ब्लॉक करना हटा दें

मैं इस जावा स्क्रिप्ट फ़ाइल के लिए कैसे कर सकता हूँ जो स्लाइडर को कॉल करती है:

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

जवाबों:


14

मैं Magento-1.9.x पर दिए गए रेंडर-ब्लॉकिंग जावास्क्रिप्ट मुद्दे को निम्नानुसार हल करता हूं:

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

या

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

संकेत: यह आधार विषय पर पता लगा सकता है

app \ design \ frontend \ base \ default \ layout \ page.xml लाइन के बारे में: 38,

यदि आप rwd के लिए सक्रिय थीम अलग पथ पूर्व का उपयोग करते हैं, जैसे app \ design \ frontend \ base \ default \ layout \ page.xml


तुम कहाँ जोड़ते हो? मैगेंटो xml फ़ाइल किस में है?
स्टाइलज

हाँ, @styzzz और भी शीर्ष लेख / पाद लेख फ़ाइल इसकी बेहतर गूगल सुझाव अवरुद्ध js खोजने के लिए
matinict

@styzz यह बेस थीम ऐप \ design \ frontend \ base \ default \ layout \ page \ xml पर लाइन के बारे में पता लगाता है: 38। यदि आप ऐप के रूप में rwd के लिए सक्रिय थीम अलग पथ पूर्व का उपयोग करते हैं, तो app_ design \ baseend \ default \ default \ layout \ page.xml
matinict

1
मैंने तुम्हारा पीछा किया। यह Google पृष्ठ अंतर्दृष्टि में समस्या को हल करता है लेकिन यह Google क्रोम में कंसोल में कई त्रुटियां दे रहा है
शोएब मिर्ज़ा

@MDSHOEBMIRZA ने तब इस मुद्दे को हल नहीं किया
स्टीव जी

5

"मोहन जीएस" द्वारा वर्णित तकनीक यहां काम नहीं करेगी।

जेएस पथ के कारण /media/js/ऐसा लगता है कि वह जेएस विलय का उपयोग करता है । इसका मतलब है, कि सभी js फ़ाइलें xml मानक तरीके से जोड़ी गई हैं

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

एक बड़े में विलय कर दिया जाएगा /media/js/<hash>.js

Magento कोर js फाइलें जोड़ी जाती हैं

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

इस तरह से, भी।

इनलाइन js का उपयोग करने वाले कई टेम्प्लेट भी हैं, जो कि उन वस्तुओं / कार्यों पर निर्भर करता है जो हेड js फाइलों द्वारा परिभाषित किए गए हैं।

इस बिंदु पर, क्या केवल सिर की जेएस फाइलों को नीचे की ओर ले जाना पर्याप्त नहीं है। आपको हेड इन के बाद और इससे पहले </body>भी सभी इनलाइन js घोषणाओं को आगे बढ़ाना होगा ।

सभी / कई मामलों में टेम्प्लेट से इनलाइन js को अलग करना असंभव है क्योंकि वे टेम्पलेट विशिष्ट चर का उपयोग कर रहे हैं।

आप केवल अंतिम html को पार्स करने जैसी सामान्य विधि का उपयोग कर सकते हैं और इस चीजों को एक साथ और सही क्रम में स्थानांतरित कर सकते हैं।

तो विस्तार से एक नज़र डालें Pagespeed


मुझे खेद है - मुझे अभी भी पता नहीं है कि क्या करना है। मुझे कौन सी फ़ाइल संपादित करनी चाहिए? क्या आप कह रहे हैं कि हमें एक्सएमएल फाइलों को एडिट करना चाहिए और जेएस को कॉल करने वाली लाइन को एक अलग सेक्शन में ले जाना चाहिए? मैं XML फ़ाइल को संपादित कर सकता हूं, लेकिन मैं अनिश्चित हूं कि कौन सी है, और उस लाइन को कहां स्थानांतरित करना है जिसे जेएस स्क्रिप्ट कहा जाता है। कृपया मुझे बताओ।
स्टाइलज़

मेरे उत्तर की व्याख्या करनी चाहिए, कि आप कर सकते हैं जावास्क्रिप्ट xml कॉल को किसी भिन्न खंड में नहीं ले । इससे त्रुटियां होंगी। आप उल्लेखित विस्तार को आजमा सकते हैं।
स्टीवन फ्रिट्ज़

हाय स्टीवन, मैंने आपके मॉड्यूल की कोशिश की। कुछ नहीं बदला। कोई जावास्क्रिप्ट या सीएसएस नहीं ले जाया गया। इसके अलावा एडमिन एंड पेजस्पीड कॉन्फ़िगरेशन 404
संदीप

@ संदीप: यह आपकी टिप्पणी के लिए जगह नहीं है। कृपया बनाएँ विस्तृत रिपोर्ट / मुद्दा github पर ।
स्टीवन फ्रिट्ज़

4

यह कोड कहता है कि पूरे दस्तावेज़ को लोड करने के लिए प्रतीक्षा करें, फिर बाहरी फ़ाइल को लोड करें 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>

ये ऐसे चरण हैं जिनका आपको पालन करना होगा।

  1. कोड के ऊपर कॉपी करें।

  2. </body>टैग के ठीक पहले (अपने HTML फ़ाइल के निचले भाग के पास) अपने HTML में कोड पेस्ट करें ।

  3. defer.jsअपनी बाहरी JS फ़ाइल का नाम बदलें ।

  4. सुनिश्चित करें कि आपकी फ़ाइल का पथ सही है। उदाहरण: यदि आप अभी लगाते हैं defer.js, तो फ़ाइल defer.jsआपकी HTML फ़ाइल के समान फ़ोल्डर में होनी चाहिए।

अधिक जानकारी के लिए, इस लेख को देखें


1

इसे हल करने के लिए ओपन सोर्स एक्सटेंशन है Https://github.com/mediarox/pagespeed

वर्तमान सुविधाएँ

  • सभी जावास्क्रिप्ट टैग (हेड और इनलाइन) को नीचे की ओर ले जाएं। ({} {Stripped_html js})
  • सशर्त js इकाइयां ({एकाधिक js टैग})
  • "इनलाइन" जेएस टैग सहित बाहरी जेएस टैग शामिल हैं
  • सभी सीएसएस टैग (सिर और इनलाइन) को नीचे की ओर ले जाएं। ({} {Stripped_html सीएसएस})
  • सशर्त सीएसएस इकाइयां ({कई सीएसएस टैग})
  • बाहरी सीएसएस टैग सहित
  • इनलाइन सीएसएस टैग सहित

अनुकूलता

Magento 1.5.x से Magento 1.9.x तक।

बैकएंड कॉन्फ़िगरेशन

सभी मॉड्यूल (Pagespeed_Js, Pagespeed_Css) डिफ़ॉल्ट रूप से अक्षम हैं।

कॉन्फ़िगरेशन पथ: सिस्टम> कॉन्फ़िगरेशन> उन्नत> Pagespeed

यह काम किस प्रकार करता है ?

इवेंट "कंट्रोलर_फ्रंट_सेंड_प्रोसेस_बेफोर" पर साधारण HTML स्ट्रीम को पार्स करें।


GitHub पर गए और पाया कि स्क्रिप्ट आखिरी बार 23 सितंबर 2015 को अपडेट की गई थी। इसके अलावा Magento के बारे में कोई उल्लेख नहीं है। क्या यह Magento 2 के लिए काम करेगी या नहीं? यदि आपके पास कोई अन्य पुनरीक्षण / सुझाव नहीं है?
मैरीकामिटोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.