![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zawartość tabeli A wyświetlam jako lista rozwijana <select>, wszystko oczywiście generowane w php.
Zawartość tej tabeli prawie że się nie zmienia więc aż się prosi o robienie jakiegoś cache, żeby nie obciążać bazy danych tym samym zapytaniem. Zrobienie takiego cache to banał. Problem robi się, gdy User zaznaczy w liście rozwijanej np. opcję 3 i trzymamy ten wybór w zmiennej sesyjnej. Później ta opcja powinna być automagicznie ustawiona przez całe jego chodzenie po serwisie, dopóki nie zmieni sobie (czyli chodzi o to, ze któraś opcja musi być selected). Problem w tym, że jeśli zapiszemy do pliku cache ten wybór, to wszystkim innym internautom też będzie się automagicznie wybierałą opcja 3. Ja wykoncypowałem 2 wyjścia i oba mi się nie podobają: 1. robimy kilka plików cache - jeden dla listy z niewybraną żadną opcją i po jednym dla każdej wybranej opcji 2. robimy pliki cache i wiążemy te pliki z danym internautą przez np. jakiś identyfukator przechowywany w sesji. Czy jest jakaś inna, łatwiejsza i przyjemniejsza metoda obejścia problemu? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Piszesz
Cytat Zrobienie takiego cache to banał. a pozniej Cytat Problem w tym, że jeśli zapiszemy do pliku cache ten wybór, to wszystkim innym internautom też będzie się automagicznie wybierałą opcja 3. wiec widac nie jest to taki banal. Jak u Ciebie wygladaja pliki cache? Podaj przyklad zawartosci takiego pliku.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Na razie w ogóle nie wyglądają, bo zastanawiam się jak to rozwiązać.
Na razie widzę algorytm tak, że funkcja generująca tą listę: 1. sprawdza czy istnieje plik cache. 2. jak istnieje to zaczytuje treść pliku i ją zwraca jako swoją odpowiedź. koniec działania funkcji. 3. jeśli plik cache nie istnieje, to zadaje odpowiednie pytanie bazie, następnie tworzy kod listy, zapisuje ją do nowoutworzonego pliku cache i zwraca listę. koneic działania. a jak może wyglądać taka lista? Ot choćby tak: zabawa się robi, gdy trzeba gdzieś wcisnąć "selected" przy odpowiedniej opcji |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
wiec nie wiem dlaczego dla uzytkownika 1 mialo by cache'owac liste uzytkownika 2.
Przy okazji jedynym slusznym rozwiazaniem jest cache wynikow zapytania SQL, jezeli dobrze napiszesz zapytanie to wszystko bedzie ok Ten post edytował lukaskolista 12.04.2011, 12:39:22 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
wiec nie wiem dlaczego dla uzytkownika 1 mialo by cache'owac liste uzytkownika 2 bo jeśli dla użytkownika 1 wpiszesz selected przy np. opcji 3: i tak zapiszesz do pliku cache, to gdy użytkownik 2 dostanie dane z tego pliku cache, to będzie miał od razu wybraną opcję 3: |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
to dla uzytkownika 2 rob osobny plik cache i po problemie. Nie wiem o co Ci chodzi, cache'uje sie wyniki zapytan z bazy, a nie listy select...
Edit: opisz jak wedlug Ciebie mialby wygladac mechanizm cache Ten post edytował lukaskolista 12.04.2011, 12:44:46 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
to dla uzytkownika 2 rob osobny plik cache i po problemie no i to jest wyjście 2 o którym pisałem, że mi się nie podoba. cache'uje sie wyniki zapytan z bazy, a nie listy select... a jak zapisać samą odpowiedź z bazy, bez kodów html, do pliku cache? Tak żeby później jej użyć z poziomu skryptu do stworzenia poprawnej listy rozwijanej? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
czyli jednak nie pojmujesz mechanizmu cache. Normalnie, przez serialize() albo json_encode()
skoro nie podoba Ci sie tworzenie kilku plikow to nie mamy o czym rozmawiac, cache odpada Ten post edytował lukaskolista 12.04.2011, 12:51:15 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ech... A to nie możesz zostawić w spokoju cache Selecta i wybór zapamietać w cookies lub sesji? Pobierać tego nie będziesz z bazy, a po stronie php lub js jedynie zajmiesz sie ustawieniem tego wyboru
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przykladowa zawartosc pliku cache
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:53 |