ഏത് Magento extension ആണ് നിങ്ങളുടെ വേഗത കുറയ്ക്കുന്നത്?
ഊഹിച്ചു നടക്കുന്നത് നിർത്തുക.
അമിതമായ എക്സ്റ്റൻഷനുകൾ കാരണമാണ് പലപ്പോഴും സ്റ്റോർ സ്ലോ ആകുന്നത്. പ്രശ്നം കണ്ടെത്താനായി മിക്ക ആളുകളും അവ ഓരോന്നായി ഡിസേബിൾ ചെയ്യാറുണ്ട്. ഇത് ഡീബഗ്ഗിംഗ് അല്ല. ഒരു ലൈവ് സൈറ്റിൽ വെച്ച് ഊഹിച്ചു നടക്കലാണ് ഇത്.
ഒരു എക്സ്റ്റൻഷൻ എത്രത്തോളം സ്വാധീനം ചെലുത്തുന്നു എന്ന് അളക്കാൻ Magento 2 നിങ്ങളെ അനുവദിക്കുന്നു. നിങ്ങൾ നാല് കാര്യങ്ങൾ ശ്രദ്ധിക്കേണ്ടതുണ്ട്:
- Plugins: ഓരോ പ്ലഗിനും ഒരു റിക്വസ്റ്റിൽ ഒരു പുതിയ ലെയർ ചേർക്കുന്നു. ഫാസ്റ്റ് പാത്തുകളിൽ (fast paths) ധാരാളം പ്ലഗിനുകൾ ഉണ്ടെങ്കിൽ അത് റിക്വസ്റ്റുകൾ സ്ലോ ആക്കാൻ കാരണമാകും.
- Observers: ഒരു കോമൺ ഇവന്റിലെ (common event) ഒബ്സർവർ എല്ലാ പേജിലും പ്രവർത്തിക്കുന്നു.
- Layout: മോഡ്യൂളുകൾ ഷെയർഡ് കണ്ടെയ്നറുകളിലേക്ക് (shared containers) ബ്ലോക്കുകൾ ഇൻജക്ട് ചെയ്യുന്നു. നിങ്ങൾക്ക് ആവശ്യമില്ലാത്തപ്പോഴും ഇവ പ്രവർത്തിച്ചുകൊണ്ടിരിക്കും.
- Queries: ഓരോ ഐറ്റത്തിനും ഒരു അധിക ലുക്കപ്പ് (lookup) വന്നാൽ പോലും ഒരു പേജിൽ നൂറുകണക്കിന് അധിക ക്വറികൾ ഉണ്ടായേക്കാം.
ഊഹിക്കരുത്. സത്യം കണ്ടെത്താൻ ബിൽറ്റ്-ഇൻ പ്രൊഫൈലർ (built-in profiler) ഉപയോഗിക്കുക.
ഈ കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:
bin/magento dev:profiler:enable
സ്ലോ ആയ ഒരു പേജ് ലോഡ് ചെയ്യുക. ഒരുപാട് തവണ വിളിക്കപ്പെടുന്ന മെത്തേഡുകൾ (methods) ശ്രദ്ധിക്കുക. 1,400 തവണ വിളിക്കപ്പെടുന്ന ഒരു മെത്തേഡ് ഒരു പ്രശ്നമാണ്.
കൂടുതൽ കൃത്യമായ വിവരങ്ങൾക്കായി Blackfire, Xdebug, അല്ലെങ്കിൽ New Relic എന്നിവ ഉപയോഗിക്കുക. ഒരു വെണ്ടർ നെയിംസ്പേസ് (vendor namespace) എത്ര സമയം ഉപയോഗിക്കുന്നു എന്ന് Blackfire കൃത്യമായി കാണിച്ചുതരും.
ഫയലുകൾ സെർച്ച് ചെയ്തുകൊണ്ട് മോഡ്യൂളുകൾ എവിടെയാണ് ഹുക്ക് (hook) ചെയ്തിരിക്കുന്നത് എന്ന് നിങ്ങൾക്ക് കണ്ടെത്താം:
പ്ലഗിനുകൾ കണ്ടെത്താൻ:
grep -rl "<plugin" vendor/*/module-*/etc/ app/code/*/*/etc/
ഒബ്സർവർമാർ കണ്ടെത്താൻ:
grep -rl "<observer" vendor/*/module-*/etc/ app/code/*/*/etc/
സംശയിക്കുന്ന ഒരു മോഡ്യൂൾ കണ്ടെത്തിക്കഴിഞ്ഞാൽ, ശാസ്ത്രീയമായ രീതി ഉപയോഗിക്കുക:
- മോഡ്യൂൾ ആക്റ്റീവ് ആയിരിക്കുമ്പോൾ പേജ് സ്പീഡ് അളക്കുക.
- ആ പ്രത്യേക മോഡ്യൂൾ ഡിസേബിൾ ചെയ്യുക.
- വീണ്ടും പേജ് സ്പീഡ് അളക്കുക.
ഈ രണ്ട് അളവുകൾ തമ്മിലുള്ള വ്യത്യാസമാണ് ആ മോഡ്യൂളിന്റെ യഥാർത്ഥ ആഘാതം (cost).
ഒരു സ്ലോ മോഡ്യൂൾ കണ്ടെത്തിയാൽ നിങ്ങൾക്ക് മൂന്ന് വഴികളുണ്ട്:
- സ്കോപ്പ് മാറ്റുക (Change the scope): പ്ലഗിനെ പ്രത്യേക ഏരിയകളിലേക്ക് മാത്രമായി പരിമിതപ്പെടുത്താൻ di.xml ഉപയോഗിക്കുക.
- ലോജിക് മാറ്റുക (Replace the logic): ഒരു ഹെവി around plugin-ന് പകരമായി സ്വന്തമായി ഒരു thin module എഴുതുക.
- നീക്കം ചെയ്യുക (Remove it): അതിന്റെ ആഘാതം അതിന്റെ ഉപയോഗത്തേക്കാൾ കൂടുതലാണെങ്കിൽ, അത് ഡിലീറ്റ് ചെയ്യുക.
പെർഫോമൻസിനെ വെറും ഊഹങ്ങളായി കാണുന്നത് നിർത്തുക. നിങ്ങളുടെ സ്റ്റോർ ശരിയാക്കാൻ ഡാറ്റ ഉപയോഗിക്കുക.
Source: https://dev.to/iamrobindhiman/which-magento-extension-is-slowing-you-down-stop-guessing-1mj3