konto usunięte

Temat: szybkość a generowanie miniatur...

Mam stronę, na której jeden obraz pojawia się na miniaturach w 3 rożnych rozmiarach (w zależności gdzie jesteśmy; -wymysł designera, nie wnikam). Zastanawiam się w którym momencie bardziej opłacać mi się będzie wygenerować od razu wszystkie miniatury i potem wyświetlać tylko jpegi, zamiast dynamicznego generowania w każdym miejscu...

Generalnie zależy mi najbardziej na prędkości, załóżmy, że miejsce na serwerze nie jest problemem

Macie jakieś doświadczenia w tym temacie?Lidia Wilczyńska edytował(a) ten post dnia 19.08.09 o godzinie 21:07

konto usunięte

Temat: szybkość a generowanie miniatur...

Lidia Wilczyńska:

U mnie jest to tak zrobione, że oryginalne zdjęcie jest ładowane do jednego katalogu. Potem np. gdy użytkownik po raz pierwszy wyświetli miniaturkę zdjęcia, to ta wygenerowana miniaturka ładowana jest do drugiego katalogu, a potem z niej pobierana.

Może i są lepsze pomysły ale dla mnie bardzo dobrze to działa.Bartłomiej S. edytował(a) ten post dnia 19.08.09 o godzinie 21:13
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: szybkość a generowanie miniatur...

upload -> validacja -> tworzenie miniaturkek -> zapis jako plik na serwerze, jezeli chcesz to przyspieszysc jeszcze bardziej to niech plik laduje na innym serwerze ktory jest obslugiwany przez cos lzejszego niz apache

konto usunięte

Temat: szybkość a generowanie miniatur...

Łukasz Cepowski:
upload -> validacja -> tworzenie miniaturkek -> zapis jako plik na serwerze, jezeli chcesz to przyspieszysc jeszcze bardziej to niech plik laduje na innym serwerze ktory jest obslugiwany przez cos lzejszego niz apache


Tak jak pisze Łukasz.
Generowanie grafiki w locie to zły pomysł, bo wszelkiego rodzaju transformacje obrazu to procesy bardzo ciężkie i należy ich unikac za wszelką cenę.

Jeśli nie mówimy tu o dziekiątkach czy setkach tysięcy requestów, to spokojnie będzie działać na jednym serwerze z www.

Osobiście zawsze zachowuję oryginały grafiki, gyby w przyszłości trzeba było wygenerować miniatury innego rozmiaru (np. po zmianie designu strony).

konto usunięte

Temat: szybkość a generowanie miniatur...

dzięki za ekspresowe odpowiedzi ;)

W sumie wychodzi mi na to, że czy wygeneruję w momencie, kiedy użytkownik chce coś wyświetlić (bez powtarzania tego przy każdym użytkowniku oczywiście - raz wygenerowana miniatura siedzi już w katalogu), czy od razu po załadowaniu na serwer - nie ma znaczenia.
"full size" (w zasadzie to zmniejszone do określonych wymiarów, ale wciąż duże) obrazki i tak siedzą na serwerze, zeby sobie tu i tam można było zooma zrobic ;PLidia Wilczyńska edytował(a) ten post dnia 19.08.09 o godzinie 21:29

konto usunięte

Temat: szybkość a generowanie miniatur...

Czy ja wiem czy nie ma znaczenia ? Zalezy od ilosci wgrywanych zdjec przy okreslonym natezeniu. Zalozmy ze zdjecia maja po 2 mb, jest ich kilkaset (zakladajac, ze zezwalasz na ladowanie np spakowanej paczki ze zdjeciami lub wielu zdjec - nie jest to niemozliwe) - i zaczyna sie robic 500 :)

Ja to rozwiazuje calkowicie w tle, uzytkownik wgrywa zdjecie, a skrypt batchowe je przetwarza w momencie gdy sa zasoby wolne. Minus - przy wiekszym ruchu trzeba zaczekac np 2/3 minuty.

Co zreszta tez da sie rozwiazac partycjonujac same maszyny, ale to chyba nie ten etap ?
Jakub L.

Jakub L. Programista

Temat: szybkość a generowanie miniatur...

Na lenia - jeżeli to jedna strona - jeden plik html, to jak dla mnie nie ma sensu słać 3 różnej wielkości miniatur tego samego obrazka, tylko posłać największą z tych miniatur i pozostałe dwie kazać przeskalować przeglądarce przez css albo width i height z tej posłanej.
Zaoszczędzi się trochę pasma, trochę requestów, trochę czasu serwera i miejsca na dysku.

konto usunięte

Temat: szybkość a generowanie miniatur...

Marcin Bachleda:
Czy ja wiem czy nie ma znaczenia ? Zalezy od ilosci wgrywanych zdjec przy okreslonym natezeniu. Zalozmy ze zdjecia maja po 2 mb, jest ich kilkaset (zakladajac, ze zezwalasz na ladowanie np spakowanej paczki ze zdjeciami lub wielu zdjec - nie jest to niemozliwe) - i zaczyna sie robic 500 :)

Ja to rozwiazuje calkowicie w tle, uzytkownik wgrywa zdjecie, a skrypt batchowe je przetwarza w momencie gdy sa zasoby wolne. Minus - przy wiekszym ruchu trzeba zaczekac np 2/3 minuty.

Co zreszta tez da sie rozwiazac partycjonujac same maszyny, ale to chyba nie ten etap ?

zdecydowanie poszedłeś za daleko ;)

User będzie ładował jeden obrazek, max 1MB, raczej nie w paczkach. Odwiedzin na samej stronie nie powinno być więcej niż 500 dziennie (nie mowiac o tym, ze aktywnych userow moze bedzie max 50), a i tak bardzo by się musieli postarać, żeby wysłać coś w tym samym czasie.

Jakuba pomysl mi sie tez podoba. W sumie racja - przy 5 kB obrazkach to tak bardzo ciążyć nie będzie... A nikt (no prawie) nie musi wiedzieć, że te 3 miniatury to jedno i to samo ;PLidia Wilczyńska edytował(a) ten post dnia 19.08.09 o godzinie 21:43

konto usunięte

Temat: szybkość a generowanie miniatur...

Lidia Wilczyńska:
Marcin Bachleda:
Czy ja wiem czy nie ma znaczenia ? Zalezy od ilosci wgrywanych zdjec przy okreslonym natezeniu. Zalozmy ze zdjecia maja po 2 mb, jest ich kilkaset (zakladajac, ze zezwalasz na ladowanie np spakowanej paczki ze zdjeciami lub wielu zdjec - nie jest to niemozliwe) - i zaczyna sie robic 500 :)

Ja to rozwiazuje calkowicie w tle, uzytkownik wgrywa zdjecie, a skrypt batchowe je przetwarza w momencie gdy sa zasoby wolne. Minus - przy wiekszym ruchu trzeba zaczekac np 2/3 minuty.

Co zreszta tez da sie rozwiazac partycjonujac same maszyny, ale to chyba nie ten etap ?

zdecydowanie poszedłeś za daleko ;)

User będzie ładował jeden obrazek, max 1MB, raczej nie w paczkach. Odwiedzin na samej stronie nie powinno być więcej niż 500 dziennie (nie mowiac o tym, ze aktywnych userow moze bedzie max 50), a i tak bardzo by się musieli postarać, żeby wysłać coś w tym samym czasie.

Jakuba pomysl mi sie tez podoba. W sumie racja - przy 5 kB obrazkach to tak bardzo ciążyć nie będzie...Lidia Wilczyńska edytował(a) ten post dnia 19.08.09 o godzinie 21:43

To rownie dobrze mozesz generowac miniaturki w biegu, z naglowkami cache dla przegladarek.

konto usunięte

Temat: szybkość a generowanie miniatur...

Jakub L.:
Na lenia - jeżeli to jedna strona - jeden plik html, to jak dla mnie nie ma sensu słać 3 różnej wielkości miniatur tego samego obrazka, tylko posłać największą z tych miniatur i pozostałe dwie kazać przeskalować przeglądarce przez css albo width i height z tej posłanej.
Zaoszczędzi się trochę pasma, trochę requestów, trochę czasu serwera i miejsca na dysku.

Ok, ale co gdy miniaturki nie sa proporcjonalne ?

Znajac grafika pewnie takie zrobil, wiec beda wygladac, hmm - kiepsko.

konto usunięte

Temat: szybkość a generowanie miniatur...

To rownie dobrze mozesz generowac miniaturki w biegu, z naglowkami cache dla przegladarek.
przy 100 userach przeglądających podstronę na której będzie po 10 takich miniatur...?

konto usunięte

Temat: szybkość a generowanie miniatur...

Lidia Wilczyńska:
To rownie dobrze mozesz generowac miniaturki w biegu, z naglowkami cache dla przegladarek.
przy 100 userach przeglądających podstronę na której będzie po 10 takich miniatur...?

Przy 500 planowanych userach, 100 na raz w danym momencie? :)

konto usunięte

Temat: szybkość a generowanie miniatur...

Jakbys miala miec 100 userow w jednym momencie, to trzeba ruch rozkladac na kilka maszyc i najlepiej uzyc jakis CDN-ow do plikow, np na Mogile'u.

Tylko ze predzej slon przejdzie przez ucho igielne niz przy 500 userach bedzie 100 w danym momencie requestowac :)

konto usunięte

Temat: szybkość a generowanie miniatur...

Marcin Bachleda:
Lidia Wilczyńska:
To rownie dobrze mozesz generowac miniaturki w biegu, z naglowkami cache dla przegladarek.
przy 100 userach przeglądających podstronę na której będzie po 10 takich miniatur...?

Przy 500 planowanych userach, 100 na raz w danym momencie? :)
to niech bedzie 50 ;P nawet 25, to chyba juz dość sporo dla dynamicznych miniatur ;>
Marcin Bachleda:
Ok, ale co gdy miniaturki nie sa proporcjonalne ?

Znajac grafika pewnie takie zrobil, wiec beda wygladac, hmm - kiepsko.

cssem można ustawić np stałą szerokość, wysokośc sie wtedy sama skaluje (nawet w IE6! :o )
Ale to już takie dywagacje

Jeszcze raz dzieki, przemysle i cos mądrego (mam nadzieję) z tym zrobię.

konto usunięte

Temat: szybkość a generowanie miniatur...

Zawsze musisz postawic na swoim ? :)

Watpie ze przy 500 userach zdarzy sie sytuacja powyzej 5 userow na raz, a i ta rzadko.

Plus miniaturek tworzonych dynamicznie jest taki, ze mozesz uciac np srodek i wtedy masz stala szerokosc. Przy miniaturkach raczej rzadko spotyka sie np 10 roznej wysokosci.

Tak czy siak, powodzenia :) I owocnego wyniku.

konto usunięte

Temat: szybkość a generowanie miniatur...

Marcin Bachleda:
Zawsze musisz postawic na swoim ? :)
I zawsze muszę mieć ostatnie słowo :D

Marcin Bachleda:
[...]
Plus miniaturek tworzonych dynamicznie jest taki, ze mozesz uciac np srodek i wtedy masz stala szerokosc. Przy miniaturkach raczej rzadko spotyka sie np 10 roznej wysokosci.
Zważywszy, że to samo, co dynamicznie, można zrobić raz i potem z tego korzystać... nevermind ;PLidia Wilczyńska edytował(a) ten post dnia 19.08.09 o godzinie 22:01

konto usunięte

Temat: szybkość a generowanie miniatur...

Lidia Wilczyńska:
Zważywszy, że to samo, co dynamicznie, można zrobić raz i potem z tego korzystać... nevermind ;PLidia Wilczyńska edytował(a) ten post dnia 19.08.09 o godzinie 22:01

Przeciez w swoim pierwszym poscie napisalem, ze zrobilbym to raz, ale skryptem batchowym, a nie podczas requestu uzytkownika :)

Ale przy takich ruchu nie odczujesz zadnej roznicy.

konto usunięte

Temat: szybkość a generowanie miniatur...

Marcin Bachleda:
Lidia Wilczyńska:
Zważywszy, że to samo, co dynamicznie, można zrobić raz i potem z tego korzystać... nevermind ;PLidia Wilczyńska edytował(a) ten post dnia 19.08.09 o godzinie 22:01

Przeciez w swoim pierwszym poscie napisalem, ze zrobilbym to raz, ale skryptem batchowym, a nie podczas requestu uzytkownika :)

Ale przy takich ruchu nie odczujesz zadnej roznicy.
Amen ;P
Piotr Baranowski

Piotr Baranowski Rozwiązuje problemy,
poprawiam świat,
chłonę wiedzę i
prz...

Temat: szybkość a generowanie miniatur...

Miejsce na dysku to juz nie taka wielka rzecz.

Jak bedziesz je generowac dopiero jak user je zarequestuje, to musisz za kazdym razem sprawdzic czy ten plik juz zostal wygenerowany czy nie.

Napisalas, ze zalezy Ci na predkosci, wiec najlepiej robic miniaturki od razu po uploadzie fotki. Wtedy nie musisz sprawdzac, czy plik jest, zakladasz ze jest. Jezeli nie ma, to jest wyjatek - ale to juz powinno byc obsluzone podczas tworzenia miniaturki, ze cos sie nie udalo.

Oczywiscie takie sprawdzanie za kazdym razem czy plik istnieje nie jest jakies super spowalniajace.. ale zawsze to kolejny if. No i przy wiekszym ruchu moze sie zrobic wiele dojsc do katalogu i kolejka i bedzie spowolnienie ;-) [tak, wiem, ekstremalna sytuacja]

konto usunięte

Temat: szybkość a generowanie miniatur...

Marcin Bachleda:
Zawsze musisz postawic na swoim ? :)

Watpie ze przy 500 userach zdarzy sie sytuacja powyzej 5 userow na raz, a i ta rzadko.

Plus miniaturek tworzonych dynamicznie jest taki, ze mozesz uciac np srodek i wtedy masz stala szerokosc. Przy miniaturkach raczej rzadko spotyka sie np 10 roznej wysokosci.

Tak czy siak, powodzenia :) I owocnego wyniku.

Może siedzi po 100 w trybie pięciozmianowym i w kółko wrzucają zdjęcia :)

Osobiście robię tak, że generuję miniatury w momencie uploadu, tak jak zresztą doradził Piotr. Zamiast robić to samo kilkaset razy dziennie, robi się to raz, zabierając tylko kilka KB na miniaturę. Generowanie w locie to zbędne obciążenie dla serwera.

Następna dyskusja:

Ponownie Exif - generowanie...




Wyślij zaproszenie do