Przyspieszanie sklepu – 1.

Zgłoszony problem

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*