Witam,
w serwisie, który aktualnie tworzę, po lewej stronie wyświetlam menu producentów oraz modeli telefonów. Jest tego naprawdę sporo.
Menu to wyświetlam jako komponent (dane pobierane z bazy danych). Samo zapytanie do bazy wykonuje się szybko - średnio w ok. 13ms. Jednak wygenerowanie tegoż menu drastycznie obniża wydajność aplikacji. Z menu telefonów czas tworzenia całego szablonu to ok. 6000ms; jeśli natomiast wyłączę komponent w layoucie to wtedy czas spada do ok. 400ms (przebicie masakryczne).
Menu to nie będzie zbyt często zmieniane więc chciałbym zastosować w tym przypadku cache'owanie. Dodałem odpowiednie wpisy w yml'ach, mam ramkę dookoła listy z telefonami świadczącą o poprawnym cache'owaniu (w katalogu cache również widać przygotowany kod). Jednak nie widzę żadnej różnicy w prędkości działania strony. Dodatkowo w trybie dev widzę, że zapytanie z komponentu nadal jest wykonywane (chyba nie powinno).
Również inna rzecz mnie zaniepokoiła. W statystykach czasu generowania poszczególnych elementów strony widzę, że tworzenie tego komponentu zabiera ok. 80% całego czasu. Sporo :/ Pomyślałem, że jest to wynikiem pętli po wszystkich elementach pobieranych z bazy (łącznie ponad 1200 wierszy). Usunąłem więc całą zawartość kodu szablonu komponentu (zostało tylko pobieranie z bazy, bez wyświetlania) co niestety również w żadnym stopniu nie poprawiło prędkości wczytywania strony.
Czy jest to normalne zjawisko czy może na coś powinienem zwrócić uwagę? Kodów nie daję, bo chyba wszystko jasno zostało opisane.
Pozdrawiam,
pion
PS: korzystam z Symfony 1.1
PS2: przekopiowałem kod z cache i utworzyłem z niego osobnego partiala i wczytuję go zamiast komponentu. Pomaga. Ale dlaczego cache'owanie nie przynosi oczekiwanego rezultatu?