to samo jesli chodzi o userów, grupy userów, newsy - ogolnie get by id, get by parent, get all itp itd. Jestem zmuszony pisać w ten sposob - programisci uzywają potem 'klocków' do składania strony. Wracając do tematu - pomysłu... uruchamiając np 10 razy funkcje z rodziny 'byId' wykonuje 10 zapytań co oczywiscie jest mi nie na reke... wpadłem na pomysł, aby funkcja liczyła wewnątrz, który raz w tym requescie jest wywoływana i teraz... jeśli jest to > 3 razy zapisuje w bazie//configu ze nastepnym razem przy tym samym urlu funkcja ma wykonać select * ... a potem wybierać rezultat przy poszczególnych wywołaniach dla poszczególnych wartości wejsciowych. Napisałem swego czasu 'object map' - klasa do ktorej przekazuje wszystkie selecty, i przy następnych pierw sprawdzam czy przypadkiem nie mam juz rezultatu wpisanego w niej, jesli mam to jest z tamtad pobierany a zapytanie jest pomijane. Teraz nasuwa sie pytanie... czy select * będzie wydajniejsze od 5, 10 , 20 select * where id = '' ? moze ktos ma jakis inny pomysł na podniesienie wydajności?
<?php catsFinder::getById(12); ?>
Jeśli chodzi o cache... cache jest zaimplementowany - nie jest to cos szczegolnego - przy kazdym update czyszczony jest cały - z prostego powodu - niektóre zapytania wygladają tak:
SELECT c.lang = 'pl' AS validLang, c.*, pl_c.lang AS lang_pl, en_c.lang AS lang_en, de_c.lang AS lang_de FROM nccms_cats AS c LEFT JOIN nccms_cats AS pl_c ON c.id = pl_c.id AND pl_c.lang = 'pl' LEFT JOIN nccms_cats AS en_c ON c.id = en_c.id AND en_c.lang = 'en' LEFT JOIN nccms_cats AS de_c ON c.id = de_c.id AND de_c.lang = 'de' WHERE c.parent = 0 ORDER BY priority DESC, validLang DESC
oczywiście mozna dbać na poziomie zapytania, cache dla których tabel ma być oprózniany - ja niestety musz dbać o programistów leni - takich jak ja, którzy czesto sie mylą, i to skrypt ma dbac o to co usunąć i kiedy usunąć.