2016-05-12 4 views
8

मैंने अपने पृष्ठ पर लंबन प्रभाव जोड़ा है। और अब मैं प्रदर्शन और एफपीएस और कई सवाल के साथ समस्याओं :-)Google DevTool टाइमलाइन: जबरन रिफ्लो संभावित प्रदर्शन बाधा

मैं transform3d और requestAnimationFrame का उपयोग यह महसूस करने के लिए (इस तरह की सिफारिश की http://www.html5rocks.com/en/tutorials/speed/animations/) है।

मेरे कोड इस तरह दिखता है:

मजबूर पुनर्प्रवाहित संभावना प्रदर्शन टोंटी है

enter image description here

कॉल:

window.addEventListener('scroll', function() { 
    latestKnownScrollY = window.scrollY; 
}); 

function updateParallax() { 
    var y = latestKnownScrollY * 0.4; 
    element.style.transform = 'translate3d(0, ' + y + 'px, 0)'; 
    requestAnimationFrame(updateParallax); 
} 

updateParallax(); 

कभी कभी मैं स्क्रीनशॉट पर की तरह चेतावनी हैपर स्टैक अंक।

लेकिन यह चेतावनी केवल कभी-कभी क्यों दिखाई देती है? मैं window.scrollY प्रत्येक स्क्रॉल ईवेंट का उपयोग करता हूं।

+0

क्या आप कहीं डेमो पोस्ट कर सकते हैं (उदा। कोडपेन पर)? इसे दोहराने की कोशिश कर रहे एक घंटे बिताएं लेकिन अब तक सक्षम नहीं हुए हैं। –

+2

आपके द्वारा अब तक प्रदान किया गया कोड किसी भी बाधा का कारण नहीं दिखता है, लेकिन छोड़े गए अन्य कोड के साथ मिलकर कुछ प्रदर्शन मुद्दों को पुन: गणना में शामिल पृष्ठ पर डीओएम तत्वों की संख्या के आधार पर पाया जा सकता है। कुछ उपयोगी जानकारी मिल सकती है [बड़े जटिल लेआउट और लेआउट थ्रैशिंग से बचें] (https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing) और [ क्या लेआउट लेआउट/reflow] (https://gist.github.com/paulirish/5d52fb081b3570c81e3a) –

+0

मैंने फिर से परीक्षण किया। और मैंने एक पैटर्न देखा: यह चेतावनी तब दिखाई देती है जब मैं सीएसएस संक्रमण (केवल पृष्ठभूमि रंग) के साथ बटन पर पेज और कर्सर स्क्रॉल करता हूं। – FiftiN

उत्तर

3

प्रत्येक बार जब आप window.scrollY पढ़ते हैं, तो आप एक रिफ्लो का कारण बन रहे हैं। इसका मतलब यह है कि ब्राउज़र आपको मूल्य देने के लिए शैलियों और लेआउट की गणना कर रहा है।

यह कहता है कि यह संभावित एक प्रदर्शन समस्या है क्योंकि इसमें समय लगता है और तुल्यकालिक है। यदि आप गुणों को पढ़ते हैं, सेट करते हैं, पढ़ते हैं, सेट करते हैं, पढ़ते हैं, सेट करते हैं, या यदि आपके पास एक लूप के अंदर इस तरह की चीज है, तो यह तब तक बाधा उत्पन्न करेगी जब तक कि यह आपके द्वारा रिफ्लो ट्रिगर करने पर पूरे पृष्ठ को फिर से खींचा जा सके। समाधान आमतौर पर आपको जो कुछ भी चाहिए उसे पढ़ता है, फिर उसे बदलने के लिए आवश्यक सब कुछ सेट करें।

लेकिन आपके मामले में यह कोई समस्या नहीं होनी चाहिए। यह कहता है कि यह सिर्फ 2 एमएस लेता है और यह सिर्फ एक बार कर रहा है। क्या आपको कोई प्रदर्शन समस्या दिखाई देती है? जब आप स्क्रॉल करते हैं तो एक अंतराल की तरह?

+0

हां, धीमे कंप्यूटर पर स्क्रॉल करते समय मुझे लेटा हुआ है। – FiftiN

+0

जैसा कि मैंने उपर्युक्त उल्लेख किया है, मैंने देखा है कि सीएसएस एनीमेशन (उदाहरण के लिए पृष्ठभूमि रंग, अस्पष्टता या परिवर्तन) की होवर एनीमेशन काम करता है। परिणामस्वरूप यह चेतावनी प्रकट होती है। – FiftiN

+1

ईमानदारी से मुझे लगता है कि धीमी मशीन में संसाधनों की कमी है। एनिमेशन महंगे हैं। – Gabriel

संबंधित मुद्दे