Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CMS] Jak zaimplementować stronę główną?, 5 typów zawartości, wiele zapytań do bazy
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Jest 5 typów zawartości: artykuły, pliki, media, linki, newsy. Można dodać nowe typy. Każdy z nich ma osobną tabelę, np. arts, files. Każda pozycja jest przypisana do jednej z istniejących kategorii.

Na stronie głównej jest zawartość z wybranej kategorii. Domyślnie newsy. Takie rozwiązanie sprawdza się tylko w serwisach, gdzie często pisze się newsy, prowadzi bloga, o nowych rzeczach też pisze się newsy (np. wyszła nowa wersja, dodany nowy program, są nowe tapety). Czemu nie skorzystać ze sprawdzonych metod? Wzorem jest tablica na FB. Można wyświetlać na stronie głównej wszystkie lub wybrane elementy. Pozostają kwestie implementacji:

1. Wyświetlamy najnowsze pozycje wszystkich typów i może coś jeszcze
2. Trzeba sprawdzić, czy kategoria jest dostępna, czyli JOIN z tabelą `cats`
3. Trzeba ustalić jednolity wygląd każdego typu (streszczenie) dla strony głównej

Co najmniej 5 zapytań z JOIN połączonych UNION? To zarżnie serwer. Są 2 wyjścia:

1. Cache - odświeżać po dodaniu/edycji/usunięciu dowolnej pozycji lub kategorii
2. Stworzyć indeks pozycji w 1 tabeli - więcej miejsca, ale odwołujemy się tylko do 1 tabeli

W pierwszym przypadku wystarczy dołączyć cache i jazda. Jeżeli jest dużo pozycji i chcemy je wyświetlać na kolejnych stronach (1,2,3,4 .. 150) lub po kliknięciu "Więcej" jak na FB, trzeba je skądś wczytać. Tworzyć cache dla wszystkich stron? To też nieopłacalne. Drugie rozwiązanie też wymaga kopiowania treści i danych, czyli baza będzie się rozrastać.

Macie ciekawy pomysł, co powinno być na głównej w dobrym systemie CMS i jak to zaimplementować?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


O zawartości głównej decyduje opiekun tego cms (IMG:style_emoticons/default/wink.gif) Bez cache się nie objedzie i to jeszcze trzeba by było opakować w "cron", np przy dużym zainteresowaniu, tworzyć cache tylko na np tydzień i w cronie, starsze wersje kasować jakby zalegały.

Nie wiem jak to jest rozwiązane na FB, ale tu nawet nie ma co porównywać, zupełnie inne mechanizmy. Po prostu jak coś dodasz, to po 1. wcale nie musisz tego zobaczyć od razu jako wynik z bazy, wystarczy odświeżyć widok w JS. A dane wczytujesz tylko wtedy, gdy ktoś o nie zapyta, wtedy wrzucisz to do cache i tyle, a jak ktoś nie będzie tego szukał przez tydzień, wtedy w cronie to skasujesz.

I tak naprawdę nie ma znaczenia czy zapytań do bazy masz 2 czy 20 (w większości przypadków i tak tego nie zauważysz, jeśli chodzi o wydajność, chyba że masz mało optymalną strukturę). Ważne żeby były wykonywane tylko w razie potrzeby.

Ten post edytował !*! 3.12.2011, 19:50:05
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 21:35