k4myk85
6.03.2008, 15:08:24
Witam
Jestem w trakcie pisania prostej galerii (do katalogu produktów). Nie bedzie ona zawierała wiele zdjęć i dlatego nie przejmujac sie pojemnoscia dysku tworze miniaturki tych zdjec za pomoca skryptu i zapisuje na serwerze. Na stronie galerii, pobierane beda te miniatury z katalogu "min/".
Zastanawiałem sie jednak jake rozwiazanie jest lepsze:
1.tworzyc miniatury i zapisywac na dysk tak aby pozniej je wykorzystac na www
2.generowac miniaturki "w locie (bez zapisu na serwer)" podczas wyswietlania strony www.
Kiedy te metody nalezy stosowac i do jak duzych galerii??
Pozdrawiam
Grzyw
6.03.2008, 15:13:53
Według mnie zdecydowanie opcja 1.
Miniaturki masz generowane raz i w oryginalne bezpośrednio przesyłane, bez żadnych działań skalujących obciążających czas wykonania skryptu. Po co wydłużać czas wygenerowania strony przez PHP dokładając przy każdym jej ładowaniu działania na obrazkach?
Według mnie lepiej jest zawsze raz wygenerować miniaturkę np podczas dodawania zdjęcia a potem ją tylko wykorzystywać. Operacje na grafice są z natury bardzo zasobożerne więc lepiej jest je wykonywać stosunkowo żadko. Jeżeli będziesz potrzebował miniaturki o innych rozmiarach niż ta stworzona podczas wgrywania możesz sobie ją wygenerować i zapisać w jakimś katalogu cache.
tikky
6.03.2008, 22:55:40
Ja też zgadzam sie z przedmówcami, zdecydowanie lepiej od razu. Nie dosć, że generowanie w locie jest zasobożerne to jeszczem wymaga pobrania dużego obrazka przez serwer co generuje nie tylko obciążenie procesora ale też dysku. W małych bazach to nie ma znaczenia, ale po co wyrabiać sobie złe nawyki.
pozdrawiam
Tikky
dr_bonzo
6.03.2008, 23:05:04
Wydajniejsze jest generowanie wczesniejsze miniaturki - dlaczego? bo jak user ja chce objerzec to ma juz gotowa, i nie musisz jej generowac po 100 razy dla 100 userow - a na tym polega galeria, raz wstawisz obrazek, 100 userow go obejrzy. wiec po co robic to samo 100 razy jak mozna zapamietac miniaturke na dysku.
k4myk85
11.03.2008, 15:20:46
Dzieki za wasze opinie.
Poruszylem ten temat z czystej ciekawosci jak dbac o/pisac galerie aby byla zoptymalizowana i nie wymuszala na uzytkowniku desperackich czynow w trakcie ladowania.
Kolejna kwestia ktora mozna tutaj poruszyc jest sposob wybierania zdjec.
Osobiscie wole tworzyc galerie o konstrukcji w ktorej: w bazie SQL sa tylko przypisane nazwy folderow do konkretnej galerii a skrypt PHP pobiera wszystkie zdjecia z wybranego folderu.
Niewiem czy to jest sluszne ale wole baze zapelnic tylko nazwami katalogow niz masowymi zdjeciami z jednej galerii zamiast np 30 wpisow mamy 1.
Czy taka operacje usprawnia dzialanie bazy danych jezeli mamy np 100 uytkownikow na raz ogladajacych nasza galerie??
l0ud
11.03.2008, 15:27:39
IMHO nie ma sensu 'na siłę' zmniejszać obciążenia bazy. Może i dane szybciej się pobiorą, ale php musi dodatkowo wylistować wszystkie pliki z folderu. Tracisz wiele funkcji, nie możesz nadać np. tytułu i opisu danej fotografii. Zrobienie do tego PA będzie utrudnione.
Bazy danych są przecież przystosowane do dużej liczby rekordów. Ja tworzyłem 2 tabele - jedna z galeriami (ID, nazwa ,opis etc), a druga ze zdjęciami (ID, ID galerii, nazwa, opis). Nie zauważyłem żadnych problemów z wydajnością
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.