ďťż
Podstrony
|
telcocafeNa dniach zacznę projektować duży portal internetowy. Chciałbym się zapytać na co zwrócić największą uwagę, żeby aplikacja była jak najwydajniejsza i działała jak najszybciej? Jakich języków użyć i do czego oraz ogólne radyJeżeli będziesz używał języków, któe działają po stronie serwera, to częściowo jesteś od tego uzależniony. Obecnie najpopularniejszym językiem jest PHP i bazy danych MySQL. Odpowiednio zoptymalizowany kod na pewno będzie działał szybciej. Musisz dokładnie wszystko przemyśleć, zaplanować. Jeżeli natomiast sprawa ma się wyglądu - staraj się wszystko umieśćić w CSS a układ strony budować w oparciu o DIV'y. Dzięki temu stronę będzie łatwiej wypozycjonować, nie będzie niepotrzebnego kodu i na pewno zyska to na szybkości (zwłaszcza, że CSS jest ładowane tylko raz do pamięci przeglądarki). Czeka Cię duzo pracy. W razie problemów możesz zawsze do mnie na PW lub tutaj pisać. Optymalizując skrypt, wykonuj własne testy szybkości wybranych rozwiązań / funkcji. Do badania wydajności projektu pod obciążeniem polecam dołączony do Apache ab (ścieżka_do_Apache\bin\ab.exe). Artykuły o optymalizacji (zwracajcie też uwagę na datę opublikowania): http://reinholdweber.com/?p=3 http://www.whenpengu...ct-oriented-php http://www.chazzuka.com/blog/?p=163 http://www.shawnolso...for-google.html Przede wszystkim optymalizuj zapytania do bazy danych i wykonuj jak najmniej operacji dyskowych. Jeśli to możliwe, zamiast funkcji używaj instrukcji / zmiennych, np. $_SERVER['REQUEST_TIME'] zamiast time(), (int)$x zamiast intval($x). Skoro portal ma być duży, to skorzystaj z jakiegoś frameworka PHP. Tutaj masz porównanie: http://www.phpit.net...php-frameworks/ Polecam Zend Framework. Może nie jest najlepszy pod względem możliwości, ale za to bardzo szybki i wydajny (firma Zend zajmuje się rozwojem PHP). http://framework.zend.com/ http://www.zend-framework.pl/ Użytkownik Kozack edytował ten post 02 lipiec 2008, 12:47 Polecam Zend Framework. Może nie jest najlepszy pod względem możliwości, ale za to bardzo szybki i wydajny (firma Zend zajmuje się rozwojem PHP). Nadaje sie pod portal gdzie każdy user bedzie mogl dodac nieograniczona ilość fotek, 1-2 mp3 i ok 10 filmow? Reszta to standardowe opcje: newsy, artykuły, forum itp Myślę, że tak. Przy użyciu większości frameworków napiszesz taki portal. Jakiś czas temu szukałem różnych testów i porównań frameworków do PHP, żeby wybrać 1-2 i dobrze się ich nauczyć. Wybrałem Zenda i CakePHP, bo były najczęściej polecane. Pracowałem do tej pory tylko z Zendem, więc nie mam porównania z innymi, ale myślę, że nie będzie złym rozwiązaniem. Jest łatwy do nauczenia, możesz dołączyć do projektu tylko te pliki, które Ci są potrzebne, a nie całość, która zajmuje 15 MB. Można go łatwo integrować ze Smartami. Użytkownik Kozack edytował ten post 02 lipiec 2008, 15:52 Do profilowania kodu PHP użyj Xdebug. A do profilowania aplikacji pod obciążeniem wspomniane unixowe ab, czy też httperf, siege :) "szybkość" frameworka ma drugorzędne znaczenie, gdyż trzymając przyzwoity poziom kodowania wąskim gardłem będą operacje z bazą danych lub IO. W przypadku dodawania fotek trzeba uwzględnić np. żeby nie wrzucać ich do jednego katalogu (systemy plików jak np. ext3 nie lubię dużych ilości plików w jednym katalogu), warto też oddzielić serwer aplikacyjny od serwera/serwerów na wszystkie pliki statyczne (grafiki, mp3 itd). W przypadku dodawania fotek trzeba uwzględnić np. żeby nie wrzucać ich do jednego katalogu (systemy plików jak np. ext3 nie lubię dużych ilości plików w jednym katalogu), warto też oddzielić serwer aplikacyjny od serwera/serwerów na wszystkie pliki statyczne (grafiki, mp3 itd). To zrobić żeby każdy user miał swój katalog? A jak oddzielić serwer aplikacyjny od serwera na pliki statyczne? To zrobić żeby każdy user miał swój katalog? A jak oddzielić serwer aplikacyjny od serwera na pliki statyczne? 1. Wystarczy dzielić pliki na kilka katalogów 2. Plik przesyłasz na serwer aplikacyjny (user wrzuca foty), które następnie poprzez API są przesyłane na serwer/y statyczne (np. CURL/POST), skąd będą udostępniane (a także np. miniaturowane, konwertowane do odpowiedniego formatu itd.) -- ostatnio coś takiego robiłem dla serwisu, który za jakiś czas będzie w sieci :) 2a. Na serwerze statycznym (maszynie) zamiast Apache polecam Nginxa (lub ew. lighttpd), który jest chyba najszybszym serwerem - szczególnie do podawania plików statycznych. Do tego łatwo podpiąć przez CGI skrypty API (do miniaturowania pythonowy PIL wygląda na najlepsze rozwiązanie - szybszy od czystego imagemagick) Tak to się robi dla naprawdę "dużych" serwisów ;) A wszystkie pliki mojej strony są na serwerze aplikacyjnym czy statycznym? Mógłbyś mi jeszcze powiedzieć jaka jest róznica między serwerem aplikacyjnym a statycznym? Jakie parametry powinien mieć każdy z serwerów albo na co zwrócić uwage? 2. Plik przesyłasz na serwer aplikacyjny (user wrzuca foty), które następnie poprzez API są przesyłane na serwer/y statyczne (np. CURL/POST), skąd będą udostępniane (a także np. miniaturowane, konwertowane do odpowiedniego formatu itd.) -- ostatnio coś takiego robiłem dla serwisu, który za jakiś czas będzie w sieci :) 2a. Na serwerze statycznym (maszynie) zamiast Apache polecam Nginxa (lub ew. lighttpd), który jest chyba najszybszym serwerem - szczególnie do podawania plików statycznych. Do tego łatwo podpiąć przez CGI skrypty API (do miniaturowania pythonowy PIL wygląda na najlepsze rozwiązanie - szybszy od czystego imagemagick) Czyli tak: 1. user wrzuca fotke do katalogu na serwerze aplikacyjnym 2. za pomoca api przesylam fotke na serwer statyczny a na aplikacyjnym usuwam ja tak? I jeszcze pytanie czy dla takiej strony jak www.iportfolio.pl lepiej robić oddzielne serwery czy wszystko na jednym? Użytkownik WojtekP edytował ten post 03 lipiec 2008, 12:21 Cóż, strona się nie ładuje (timeout), ale zgaduję, że to serwis społecznościowy, w którym można umieścić własne portfolio. Jeżeli zauważalny jest spadek wydajności, warto przeprowadzić taką "operację". Czemu należy dzielić serwer na dwa? To na logikę. Aby strona działała szybciej, wszystkie skrypty są na jednym serwerze, natomiast dane, takie jak obrazy, pliki do ściągania znajdują się na drugim serwerze, na którym są wyłączane zbędne funkcje, takie jak parser PHP. Jeżeli zaś chodzi o katalogi użytkowników, to najlepiej jest używać takiej struktury: /opt/www/w/o/j/wojtek/. To zmniejszy ilość elementów na folder. // Edytowano @niżej: A nie czterech? :-) Ale to i tak zależy od ustawień przeglądarki. Użytkownik andrzej_aa edytował ten post 03 lipiec 2008, 13:57 Do tego przeglądarki mają limit 2 równoczesnych połączeń z daną domeną/subdomeną - jak masz statykę na oddzielnym serwerze (inna domena/subdomena) to idzie szybciej :) |
|||
Sitedesign by AltusUmbrae. |