Przyspieszanie sklepu – 1.
Właściciel sklepu zgłosił się do mnie z problemem występującym w edytorze produktów. Z jakiegoś powodu strona ładowała się bardzo długo i czasami pokazywał się biały ekran.
Analiza
Ograniczony obszar występowania błędu świadczył o tym, że dotyczy on jedynie małego wycinka kodu pojawiającego się tylko w tym jednym miejscu. Edytor zawierał kilka list: producenci, atrybuty itd. Najbardziej rzucającą się w oczy listą była lista kategorii, do których można było przypisać produkt. Autor skryptu na szczęście zostawił kod w czytelnej postaci, dzięki czemu można było dokonać kilku zmian w funkcji generującej zawartość pola „kategoria”.
Rozwiązanie
Problematyczny kawałek kodu zawierał funkcję wywołującą samą siebie (rekurencja). Przy czym wewnątrz funkcji wykonywane było zapytanie do bazy. Na podstawie pobranych rekordów funkcja była odpalana ponownie. Początkowo kategorii było niewiele, jednak z czasem obsługa sklepu wprowadziła ponad 4,5 tysiąca wpisów i tyle było generowanych zapytań do bazy danych. Po zmianie funkcji tak, aby działała na danych pobranych jednym zapytaniem, czas spędzony na generowaniu strony spadł poniżej 500ms.
Dodaj komentarz