zzeus
20.07.2010, 08:15:40
Witam,
trafiłem na następujący problem. Powiedzmy że mamy wyszukiwarkę produktów która może zwrócić około 6 tys. pozycji. Produkty prezentowane są po 15 na jednej stronie. Po wejściu do szczegółów danego produktu, chcemy mieć nawigację do kolejnego i poprzedniego produktu oraz możliwość powrotu do aktualnej podstrony z wynikami. W jaki sposób to zaimplementować ? Przechowywać wyniki wyszukiwania w bazie danych pod odpowiednim numerem id który będzie zapisany w sesji danego użytkownika ? Czy może przechowywać tylko część wyników, zakładając że użytkownik i tak przejrzy tylko pierwsze x stron wyników ?
Czy może jakiś inny sposób ?
erix
20.07.2010, 10:59:34
Cytat
Przechowywać wyniki wyszukiwania w bazie danych pod odpowiednim numerem id który będzie zapisany w sesji danego użytkownika ? Czy może przechowywać tylko część wyników, zakładając że użytkownik i tak przejrzy tylko pierwsze x stron wyników ?
Wyciągnij do tablicy i zserializuj. Potem tylko wycinasz interesujący Cię zakres i pokazujesz. 6k wyników przy obecnym, domyślnym limicie pamięci powinno wystarczyć, a zawsze możesz zrobić płaską "bazę" danych i ładować z pliku tylko interesujące Cię rekordy.
zzeus
20.07.2010, 11:06:49
6k wyników dla jednego użytkownika, przy czym jednocześnie może pracować około 150 użytkowników, więc w danej chwili trzeba będzie operować nawet na 900k rekordów
erix
20.07.2010, 11:27:08
No i? 900k, to nie jest dużo. Odpowiednie indeksy i będzie ok, nawet bez wypluwania, zwykłym LIMIT-em.
A nawet jeśli będzie zajeżdżało -> wypluj do pliku, przechowuj w cache na np. 15 minut i sprawdzaj, czy nie masz już zbuforowanych.
Najlepiej zobacz sobie w istniejących skryptach forów, tam jest to najlepiej zrobione.
Pilsener
20.07.2010, 12:51:39
Ja używam ciastek, bo moim zdaniem idealnie się nadają do personalizacji strony, wyświetlania kategorii czy promocji wg zainteresowania usera itp. itd.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.