2011-08-26 9 views
5

बस 3000 कमरों के साथ एक बड़ी इमारत मंजिल योजना के लिए Google मानचित्र बनाने की कल्पना करें।एसवीजी रेक्ट बनाम div vs canvas

मुझे 3000 आयत तक प्रदर्शित करने की आवश्यकता है (सबसे अच्छा यादृच्छिक बहुभुज प्रस्तुत करने में भी सक्षम होगा, लेकिन इस बिंदु पर, यह सबसे बड़ा मुद्दा नहीं है)। उनमें से प्रत्येक को उनसे जुड़ी घटनाएं होनी चाहिए जैसे माउसओवर और क्लिक करें जो पेज पर अन्य डोम तत्वों पर कुछ प्रभाव डालेगा। मुझे ज़ूम इन और आउट करने में भी सक्षम होना चाहिए।

मुझे पता है कि मैं इसे एसवीजी (राफेल.जेएस), सादा divs प्रतिपादन या कैनवास के साथ कर सकता हूं।

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

मदद के लिए धन्यवाद, निकोलस।

पीएस: अब तक, मैंने अनुभव किया है कि 3000 आयताकारों को प्रतिपादन आईई 8 पर रैफेल.जेएस के साथ 7 सेकंड तक ले जाता है, जो धीमा है। यह IE8 पर सादे div को 6 गुना तेज करने की तुलना में भी लगता है।

उत्तर

6

3000 डीओएम ऑब्जेक्ट्स संलग्न घटनाओं के साथ कुछ मशीनों को संभालने के लिए बहुत दर्दनाक होने जा रहा है। आम तौर पर जब आप "हजारों" श्रेणी में पहुंच जाते हैं तो डोम-आधारित समाधान (divs, SVG) का प्रदर्शन वास्तव में खराब हो जाता है। उन कई डीओएम तत्वों के साथ अच्छे लोडिंग समय प्राप्त करना असंभव है।

excanvas का प्रदर्शन भी वास्तव में बुरा है। दूसरा कोई एनीमेशन है जो excanvas का प्रदर्शन भयानक हो जाता है। चूंकि excanvas केवल वीएमएल (एसवीजी) बनाकर कैनवास की नकल करता है, यह केवल एसवीजी/वीएमएल अकेले करने की तुलना में कम से कम धीमा (और लगभग हमेशा धीमा) होने वाला है।

एक विस्तृत विश्लेषण के लिए यहाँ मेरा उत्तर देखें: HTML5 Canvas vs. SVG vs. div

मुझे विश्वास है कि अपनी सूची पर आवश्यकताओं में से एक जाना मिल गया है। वस्तुओं, प्रदर्शन, या मंच की संख्या।

यदि आपके लिए संभव है तो पुराने सुझावों के लिए समर्थन छोड़ना और कैनवास के साथ जाना होगा।

+1

उपयोगी उत्तर के लिए धन्यवाद! हालांकि एक त्वरित टिप्पणी। आईई 8 और आईई 7 पर, ऐसा लगता है कि उन 3000 आकारों (75% आयताकार) को प्रस्तुत करना एसवीजी की तुलना में एक्वांस के साथ बहुत तेज था। (excanvas लगभग आयताकारों की तुलना में तेज़ प्रतिपादन था, अगर मैंने सादा divs का उपयोग किया, जो एसवीजी से 4-6 गुना तेज है)। क्या आप कह रहे हैं कि यह बहुत धीमी हो जाएगी अगर मैं एनीमेशन जोड़ता हूं और होवर करता हूं/घटनाओं पर क्लिक करता हूं या यह वास्तव में धीमा होना चाहिए? एक बार फिर धन्यवाद! –