1

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)

2

Odp: Aktywni wystąp

Forum jest raczej martwe....

3

Odp: Aktywni wystąp

Ktoś się jednak znajdzie.

Ja zarejestrowałem się niedawno.

Trudno tu trafić.

4

Odp: Aktywni wystąp

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 hmm

5

Odp: Aktywni wystąp

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.

6

Odp: Aktywni wystąp

duke_piotr napisał/a:

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 hmm

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.

7

Odp: Aktywni wystąp

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 hmm

8

Odp: Aktywni wystąp

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 smile

9

Odp: Aktywni wystąp

No wiem ze dobrze, dobre tez by bylo pewnie uzywanie ACL do praw dostepu a tez jestem niezbyt zaprzyjazniony ;]

10

Odp: Aktywni wystąp

Cachowanie dobra sprawa, ale co jezeli ktos chce zmienic dynamiczne, podkreslam : dynamiczne menu smile, 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.

11

Odp: Aktywni wystąp

juby napisał/a:

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