𝗧𝗵𝗲 𝗘𝗔𝗩 𝗧𝗮𝘅: 𝗪𝗵𝘆 𝗠𝗮𝗴𝗲𝗻𝘁𝗼 𝗽𝗿𝗼𝗱𝘂𝗰𝘁 𝗹𝗼𝗮𝗱𝘀 𝗮𝗿𝗲 𝘀𝗹𝗼𝘄
Magento वापरकर्ते अनेकदा वेगाबद्दल तक्रार करतात. यापैकी अनेक वापरकर्ते नकळतपणे 'EAV tax' भरत असतात.
Magento मधील एखादे उत्पादन (product) ही केवळ एकच रो (row) नसते. ते अनेक टेबल्समध्ये विखुरलेल्या रो (rows) चा एक संच असतो. एक टेबल स्टॅटिक कॉलम्स (static columns) साठवते, तर इतर टेबल्स varchar, int, decimal, text आणि datetime सारख्या विशिष्ट डेटा प्रकारांचा डेटा साठवतात.
एक उत्पादन लोड करण्यासाठी, Magento यातील प्रत्येक टेबलमधून डेटा वाचते. त्यानंतर ते सर्व डेटा एकत्र करून एक ऑब्जेक्ट (object) तयार करते. जर तुम्ही 'store view' जोडला, तर हे काम दुप्पट होते.
सर्वात मोठा सापळा म्हणजे addAttributeToSelect('*') चा वापर करणे.
ॲस्टरिक्स (*) चा अर्थ असा आहे की तुम्ही प्रत्येक ॲट्रिब्यूट (attribute) लोड करत आहात. जर एखादे कॅटेगरी पेज ३६ उत्पादने दाखवत असेल, तर त्याला कदाचित फक्त name आणि price सारख्या सहा फील्ड्सची गरज असेल. पण जर तुम्ही ॲस्टरिक्स वापरला, तर तुम्ही त्याऐवजी साठ फील्ड्स लोड करता. Magento ५४ अतिरिक्त फील्ड्स वाचते, जॉइन करते आणि प्रोसेस करते, फक्त शेवटी त्यांना काढून टाकण्यासाठी.
तुम्ही हे पाच मिनिटांत सुधारू शकता.
ॲस्टरिक्स वापरणे थांबवा. तुम्हाला नेमके कोणते कॉलम्स हवे आहेत त्यांची यादी द्या:
- name
- price
- small_image
- url_key
- status
- visibility
स्लो लिस्टिंग पेजेससाठी (slow listing pages) हा बदल सर्वात मोठा फायदा ठरेल.
अधिक सखोल उपायासाठी, लिस्टिंग पेजेसवर EAV मधून उत्पादने पुन्हा एकत्र (reassemble) करू नका. कॅटेगरी पेजेस आणि सर्चसाठी इंडेक्स टेबल्स (index tables) आणि OpenSearch मधून डेटा वाचला पाहिजे. Magento तुमच्यासाठी हे इंडेक्स मेंटेन करते. एक वेगवान कॅटेगरी पेज या इंडेक्सवर अवलंबून असते आणि टेम्पलेटमध्ये प्रिंट होणाऱ्या मोजक्या ॲट्रिब्यूट्ससाठीच EAV चा वापर करते.
'flat catalog' फीचरचा वापर करू नका. Adobe ने ते बंद (deprecated) केले आहे कारण जेव्हा तुमच्याकडे अनेक ॲट्रिब्यूट्स असतात तेव्हा ते निकामी ठरते. यामुळे इंडेक्सिंगचे काम वाढते आणि MySQL कॉलमच्या मर्यादा ओलांडल्या जातात.
उत्तम परफॉर्मन्ससाठी या नियमांचे पालन करा:
- फक्त नावाचे ॲट्रिब्यूट्स निवडा. युजर्सना दिसणाऱ्या कलेक्शन्समध्ये (collections) कधीही ॲस्टरिक्स वापरू नका.
- लिस्टिंग आणि फिल्टरिंगसाठी OpenSearch वापरा.
- बल्क एक्सपोर्टसाठी (bulk exports), entity_id द्वारे keyset pagination वापरा.
- एक्सपोर्टसाठी तुम्हाला आवश्यक असलेली फील्ड्सच निवडा.
तुमच्या निकालांचे मोजमाप करा. तुमचा क्वेरी लॉग (query log) सुरू करा. जर एखादे कॅटेगरी पेज शेकडो क्वेरीज रन करत असेल, तर त्याचे कारण EAV रीअॅसेम्बली (reassembly) हेच आहे. आता तुम्हाला समजत असेल की समस्येचे कारण असलेला कोडचा ओळ (line of code) कसा शोधायचा.
Source: https://dev.to/iamrobindhiman/the-eav-tax-why-magento-product-loads-are-slow-117h
