OS X में केवल Safari (लगभग) सही जड़त्वीय स्क्रॉलिंग क्यों है?


18

मैं काफी चकित हूं कि सफारी ओएस एक्स में एकमात्र ब्राउज़र है जो (लगभग) सही जड़त्वीय स्क्रॉलिंग प्राप्त करने का प्रबंधन करता है।

  • यहां तक ​​कि एक वेबसाइट पर बहुत सारी फ्लैश सामग्री के साथ, सफारी की स्क्रॉलिंग चिकनी है।
  • लोड करने के लिए बहुत सारी सामग्री वाली वेबसाइटें हैं और सफारी आसानी से स्क्रॉल करती रहेगी जबकि सामग्री लोड और रेंडर की जा रही है।
  • कई एक्सटेंशन इंस्टॉल करने से स्क्रॉलिंग प्रदर्शन पर प्रभाव नहीं पड़ता है।

ओएस एक्स पर सफारी ब्राउज़र के प्रमुख प्रतियोगी क्रोम और फ़ायरफ़ॉक्स हैं। दोनों एक ही चिकनी स्क्रॉलिंग को वितरित करने का प्रबंधन नहीं करते हैं जैसे कि सफारी में उपयोग किया जाता है:

  • Google Chrome में सभी पृष्ठों पर GPU कंपोज़िंग जैसे झंडे सक्षम करना ( chrome://flags) या ...
  • फ़ायरफ़ॉक्स में चिकनी स्क्रॉलिंग ( Options > Advanced) स्क्रॉलिंग परफ़ॉर्मेंस को डिलीवर नहीं करती है, जो कि सफारी प्रति डिफॉल्ट को डिलीवर करती है।

सवाल

क्या सफ़ारी स्क्रॉल का उपयोग करने के लिए निजी एपीआई का उपयोग कर रहा है जो क्रोम / फ़ायरफ़ॉक्स डेवलपर्स तक नहीं पहुँच सकता है? सफारी की स्क्रॉलिंग कितनी बेहतर है और प्रतियोगी गैर-टूटी हुई स्क्रॉलिंग वितरित करने का प्रबंधन नहीं करते हैं।

मैं विशेष रूप से क्रोम के बारे में सोच रहा हूं, क्योंकि यह आमतौर पर नए ओएस एक्स सुविधाओं के लिए वास्तव में तेज है।


1
मैं असहमत हूं। फ़ायरफ़ॉक्स की स्क्रॉलिंग सफारी के मुकाबले बहुत बेहतर है (मैं 2011 की मैकबुक एयर पर 10.7.4 पर हूं): यह लगभग हमेशा 60Hz सुचारू है जबकि सफारी हमेशा थोड़ा "स्नैग" करती है। मैं तब भी सफारी का उपयोग करता हूं, क्योंकि अच्छी जूमिंग और "कवर" प्रभाव के कारण जब दो-उंगली-स्वाइप बग़ल में पीछे या आगे जाने के लिए होता है।
स्टीवन लू

2
Dammit। जब से आपने बताया कि मैं फ़ायरफ़ॉक्स को देख रहा हूँ, अब और बहुत कुछ फाड़ रहा हूँ। यह सभी जगह करता है। पाठ (इस साइट पर) झिलमिलाहट और कंपकंपी के रूप में वे लगातार फ्रेम में असंगत रूप से चलते हैं।
स्टीवन लू

2
किसी भी दर पर, सफारी ऑन लायन, एप्पल के टच इनपुट डिवाइस (टचपैड / मैजिक माउस) के साथ संयुक्त रूप से सबसे अधिक उपयोगकर्ता के अनुकूल और सबसे अच्छा प्रतिपादन वेब अनुभव कहीं भी उपलब्ध है। यह सही ढंग से vsync को लागू करता है और इसलिए कोई भी एनिमेशन फाड़ता नहीं है, और मैं तंग चुटकी-ज़ूम और स्क्रॉल-लेफ्ट-टू-गो-बैक सुविधाओं को प्राप्त नहीं कर सकता। कभी-कभी हिचकी को थोड़ा स्क्रॉल करना, लेकिन मुझे लगता है कि हमें उन मुद्दों को पैदा करने में सक्षम होने के लिए आंतरिक उपकरणों तक पहुंच की आवश्यकता होगी। अगर मुझे कभी नौकरी मिल जाती है तो मैं इस पर काम करना चाहता हूं।
स्टीवन लू

1
वाह, टिप्पणियों का भार। मैं एक और जोड़ रहा हूं, जैसा कि यह अटकलें हैं, जवाब नहीं ... इस तथ्य को अनदेखा करना कि सफारी विंडोज पर उपलब्ध है (क्यों नहीं, बाकी सब करता है ..), मुझे लगता है कि यह मैक के लिए लिखी जा रही सफारी का एक साधारण मामला है। और बाकी ब्राउज़र आवश्यक रूप से कुछ हद तक साझा कर रहे हैं, कई प्लेटफार्मों के साथ कोडबेस, इसे हर एक पर पूर्ण करना मुश्किल है।
भरवां जूल

1
यह कल्पना करना मुश्किल है कि सफारी निजी एपीआई का उपयोग नहीं करेगा : ऐसे एपीआई एप्पल के सॉफ्टवेयर को सुविधाएं प्रदान करने के अलावा किसी अन्य कारण से मौजूद नहीं हैं। लेकिन यह सिर्फ अनुमान है, और मैं वास्तव में इस सवाल का जवाब देने के लिए कोई अन्य रास्ता नहीं देखता ...
Dan J

जवाबों:


6

अंतर प्रत्येक ब्राउज़र के आर्किटेक्चर और इंटरप्रोसेस संचार विकल्पों के साथ करने की संभावना है।

आधुनिक वेब ब्राउज़र अलग-अलग प्रक्रियाओं में पृष्ठों को प्रस्तुत करते हैं। Apple के पास IOSurface नामक एक फ्रेमवर्क है जो एक प्रक्रिया को किसी अन्य प्रक्रिया के लिए एक छवि को पारित करने के लिए एक सुव्यवस्थित तरीका प्रदान करता है। यह रूपरेखा मैक ओएस एक्स 10.6, उर्फ ​​स्नो लेपर्ड, क्विकटाइम के नवीनतम पुनरावृत्ति के लिए पेश की गई थी।

QuickTime अलग प्रक्रियाओं को फिल्म डिकोडिंग के लिए IOSurface का उपयोग करता है। कोई डिकोडिंग नहीं करने के लिए, क्विकटाइम प्लेयर एप्लिकेशन को केवल यूजर इंटरफेस के साथ काम करना और डिकोडिंग प्रक्रियाओं द्वारा प्रदान की गई छवियों को दिखाना बाकी है।

मुझे संदेह है कि सफारी ने क्विकटाइम से सीखा है और उसी तकनीकों का उपयोग कर रहा है। वेब पेज अन्य प्रक्रियाओं के लिए लोड किए गए हैं, प्रदान किए गए और वापस पारित कर दिए गए हैं।

क्या क्रोम और फ़ायरफ़ॉक्स एक ही काम कर सकते हैं, बिल्कुल। चुनौती यह सुनिश्चित कर रही है कि उपयोगकर्ता के साथ काम करने वाला धागा जल्दी से प्रतिक्रिया दे और अद्यतन करने के लिए प्रतीक्षा करने में देरी न करे।

क्रोम अलग-अलग प्रक्रियाओं का उपयोग करता है और मैक पर IOSurface का उपयोग करता है; यह बग क्रोम के IOSurface के उपयोग में सुधार के बारे में बात करता है ।

IOSurface एक सार्वजनिक ढांचा है जो किसी भी मैक ओएस एक्स 10.6+ एप्लिकेशन के लिए उपलब्ध है। हालाँकि इसमें बहुत कम दस्तावेज हैं और यह मैक विशिष्ट है।

यह सब अनुमान है।


Chrome, सामग्री को प्रस्तुत करने के लिए अलग-अलग प्रक्रियाओं का उपयोग करता है, fwiw।
नाथन ग्रीनस्टीन

1
आपके उत्तर के लिए धन्यवाद! यह दुखद है कि इस सवाल पर अब तक बहुत कम प्रतिध्वनि है। लेकिन मैं इसे समझ सकता हूं यदि कोई प्राथमिक स्रोतों को संदर्भित नहीं कर सकता है।
gentmatt

@gentmatt आप उन ब्राउज़रों पर स्क्रॉलिंग अनुभव कैसे पा सकते हैं जो WebKit का उपयोग करते हैं? यह आसपास के ब्राउज़र इंटरफ़ेस कार्यान्वयन से ब्राउज़र के रेंडरिंग इंजन के प्रभाव को अलग करने में मदद कर सकता है। मेरा मानना ​​है कि OmniWeb WebKit का उपयोग करता है।
ग्राहम मिलन

@GrahamMiln क्रोम वेबकिट का भी उपयोग करता है। लेकिन क्रोम की स्क्रॉलिंग परफेक्ट, IMO से काफी दूर है। यह वास्तव में वेबसाइट की सामग्री पर निर्भर करता है। आमतौर पर, प्रदर्शन इतना अच्छा नहीं है।
जेंटमैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.