Temat: Aktywni wystąp
Witam
Jestem tu nowy - witam wszystkich i na początek małe pytanie - ilu jest tu aktywnych użytkowników? ( proszę o posty potwierdzające)
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Forum CakePHP.org.pl → Ogólne → Aktywni wystąp
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Witam
Jestem tu nowy - witam wszystkich i na początek małe pytanie - ilu jest tu aktywnych użytkowników? ( proszę o posty potwierdzające)
jestem jestem i nadal czekam na odpowiedz - jak najlepiej zrobic dnamiczne menu z bazy danych??:/ w sensie jakich narzedzi i sposobow uzyc zeby bylo szybko i bez zbednych zapytan i obciazen systemu ![]()
Co masz na myśli mówiąc 'narzędzia' ?
Jak ma wyglądać to menu ? -> Ma być wielopoziomowe ?
Staraj się trochę dokładniej opisywać problem.
jestem jestem i nadal czekam na odpowiedz - jak najlepiej zrobic dnamiczne menu z bazy danych??:/ w sensie jakich narzedzi i sposobow uzyc zeby bylo szybko i bez zbednych zapytan i obciazen systemu
http://www.leigeber.com/2008/04/sliding … down-menu/
Tu jest przykład i źródło fajnego menu w js. Reszta zależy od tego, jak głęboko ma to menu być zagnieżdżone. Jeśli tylko 2 poziomy to wystarczy odpowiednia konstrukcja bazy (MenuElement powiązany z SubMenuElement) i wyciąganie sprowadzi się do jednego $this->MenuElement ->find(), jeśli więcej poziomów można się pokusić na strukturę parrent<-children i wyciąganie danych przez $this->Model->find('threaded').
Tak czy siak przydałoby się więcej szczegółów.
Raczej chodziło o sposób. Tabele pewnie beda trzy: menu,submenu,users_has_submenu(tu beda od razu rozwiazywane prawa dostepu).
I teraz: czy robic zawsze zapytanie w kazdym kontrolerze w beforeRender i wyswietlac w Layouts, czy raczej jakis komponent ale to sprowadza sie do tego samego (tylko mniej pisania) czy jak.
Pytanie sprowadzam dlatego do formy: jakie jest najskuteczniejsze dynamiczne menu, gdyz zapytanie bedzie na kazdej stronie takie samo wiec szkoda zasobow.
PS: Zawsze jest cos takiego jak cashowanie ale prawde mowiac nie wiem jak je zastosowac odpowiednio jezeli chodzi o moj problem ![]()
Cachowanie menu na przykładzie (ENG)
http://cake--php.blogspot.com/2008/08/r … t_252.html
lub
$menus = Cache::read('menus');
if (empty($menus)) {
$menus = $this->Menu->findAll();
Cache::write('menus', $menus, array('duration'=>7200)); // 2 godziny
}
Oczywiście powyższy kod wyciągnie wszystkie elementy menu (przy odpowiednim ustawieniu $recursive) więc trzeba jeszcze zadbać o usunięcie (lub ominięcie wyciągania) elementów menu niedostępnych dla aktualnego użytkownika.
Najmniej pisania będziesz miał jeśli umieścisz kod w pliku app_controller.php, wtedy nie musisz go przeklejać do każdego kontrolera. Do tego menu jako element i jedyne co wypisujesz w layoucie to $this->renderElement('nazwa_elementu_menu'). Wykorzystanie zasobów zależy od tego jak zamierzasz to menu generować (głównie - ile razy będziesz się odwoływał do bazy).
Dobrze jest zaprzyjaźnić się z Cache'owaniem. Niektóre benchmarki wskazują na prawie 3-krotny wzrost wydajności przy zastosowaniu Cache ![]()
No wiem ze dobrze, dobre tez by bylo pewnie uzywanie ACL do praw dostepu a tez jestem niezbyt zaprzyjazniony ;]
Cachowanie dobra sprawa, ale co jezeli ktos chce zmienic dynamiczne, podkreslam : dynamiczne menu
, a czas wygasniecia jest ustawiony jak wyzej, czyli np na 2 godziniy? chyba nikt nie bedzie tak dlugo czekal na to. Cachowanie sprawdza sie tylko jezeli mamy pewnosc ze dany widok, element , layout nie bedzie zmienial sie zbyt czesto, np raz na miesiac, raz na 6 miesiecy, kwesta sporna co oznacza dla kazdego "czestosc zmian".
Jezeli chodzi o to dynamiczne menu ja bym raz na poczatku beforeFilter() wyciagnal menu z bazy danych, zapisal sobie tablice z menu w sessji, albo w ciasteczkach i na kazdej podstronie , do elementu z menu na przyklad, przekazywal wczesniej przeczytane menu z sesji lub z ciasteczek. Z praktyki wiem ze to najlepszy chyba sosob na takie powtarzajace sie rozwiazania jezeli nie chcemy za bardzo uderzac w Cachowanie.
Cachowanie sprawdza sie tylko jezeli mamy pewnosc ze dany widok, element , layout nie bedzie zmienial sie zbyt czesto, np raz na miesiac, raz na 6 miesiecy, kwesta sporna co oznacza dla kazdego "czestosc zmian".
nic nie stoi na przeszkodzie, żeby po aktualizacji rekordów wyczyścić odpowiedni plik cache, to rozwiązuje problem
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Forum CakePHP.org.pl → Ogólne → Aktywni wystąp
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc
Currently installed 2 official extensions. Copyright © 2003–2009 PunBB.
Gigaone Certyfikaty SSL, Theme Hydrogen by Kushi