eccocce
14.06.2011, 14:21:43
Hej,
Mam na stronie dynamiczne menu składające się z 3 selectów:
1) wybór kategorii
2) wybór podkategorii
3) wybór działu
Na początku tylko select 1 zawiera dane, jeśli coś wybierzemy od razu select 2 wypełnia się danymi, jeśli coś wybierzemy to zapełnia się lista 3. Wybór pozycji z selecta 3 przenosi nas na odpowiednią stronę.
Całość zrobiłem na bazie JS (aktualizowanie selectów).
Okazało się, że dane w selectach będą się czasem zmieniać i jest do tego odpowiedni panel, który umieszcza dane w bazie MySQL a na koniec generuję nowe pliki js.
Jakie są minusy takiego rozwiązania?
- użytkownik musi odświeżyć stronę, aby pobrać nowe pliki JS inaczej będzie nadal widział stare pozycje na listach
- generowanie nowych plików JS
Rozwiązanie numer 2, którego używam w panelu do dodawanie/edytowania pozycji z menu, opiera się na AJAX'ie, tzn. Zmienia się select 1, idzie zapytanie do pliku ajax.php, pobieram z bazy odpowiednie podkategorie, wysyłam do klienta, aktualizuję selecta 2 przy użyciu JS itd.
Minusy:
- duża liczba zapytań do bazy
Plusy:
- użytkownik zawsze dostaje aktualną listę (nie trzeba się martwić, że nadal ma starą listę)
-------------------
Co myślicie na ten temat? Który sposób jest lepszy na dynamiczne menu? Jak to robicie u siebie?
Pozdrawiam!
mat-bi
14.06.2011, 14:23:13
Ja bym użył po prostu AJAX - jak dobrze wszstko dasz, duża ilość zapytań nie będzie taka straszna.
erix
14.06.2011, 14:31:46
Cytat
Minusy:
- duża liczba zapytań do bazy
o cache, to słyszał?
eccocce
14.06.2011, 17:31:39
Słyszał, słyszał, ale się nie interesował

Jak widzę to cudo działa w MySQL domyślnie... Da się jakoś sprawdzić, kiedy SELECT jest odczytywany z cache, a kiedy prosto z tabeli? Z tego co czytam cache dla danej tabeli jest opróżniany za każdym razem, gdy wykonamy na tej tabeli INSERT, DELETE, UPDATE (czyli jakąś formę zapisu). Faktycznie, jeśli będzie to działać sprawnie, to po cholerę męczyć się z generowaniem nowych plików JS...
erix
14.06.2011, 17:52:19
Cytat
Jak widzę to cudo działa w MySQL domyślnie...
Ten cache jest taki, jakby go nie było: nie masz nad nim żadnej kontroli.
http://eriz.pcinside.pl/weblog/cache-danyc...teoria-211.html
Crozin
14.06.2011, 18:04:32
Daruj sobie AJAX-a tutaj bo jedynie spowolni on działanie całości. Chyba, że tych kategorii masz kilka tysięcy lub więcej.
Cytat
Jakie są minusy takiego rozwiązania?
- użytkownik musi odświeżyć stronę, aby pobrać nowe pliki JS inaczej będzie nadal widział stare pozycje na listach
Wystarczy dodać do URL-a czas ostatniej modyfikacji i już problem rozwiązany.
Cytat
- generowanie nowych plików JS
Przecież możesz stary nadpisać.