Strona-Aplikacja. Za i przeciw

Zastanawia mnie czy strona napisana tylko w JS + Ajax miała by racje bytu. Pomyślałem sobie użytkownik raz wczytuje stronę wraz ze wszystkimi skryptami i grafikami a potem za pomocą Ajaxa pobiera tylko określone dane z bazy danych. Pomysł wydaje mi się dobry ale ma też parę wad podam swoje zastrzeżenia i jeżeli macie jeszcze coś to mi powiedzcie.

+Tylko jedno wczytanie strony

+Mniejsze obciążenie serwera

+Szybsze wczytywanie podstron(a raczej tylko szablonów z pamięci i danych z bazy)

-Obciążenie pamięci RAM

-Bez użyteczność przycisków wstecz/odśwież

-Więcej pisania kodu niż przy PHP

-Obciążenie CPU (nie wiem w jakim stopniu)

Możliwe że pamięć cache przeglądarki jest lepszym rozwiązaniem? Na stronach grafiki używane są wielokrotnie a w cache nie zapisują się wszystkie wydaje mi się że jest to czysta oszczędność łącza niewielkim kosztem obciążenia komputera. Co o tym sądzicie?

yyyyyyyyy… a jak Ty chcesz pobierać z bazy javascriptem?

Wszystko zależy od tego jaka ta strona ma być rozbudowana i jakie ma mieć funkcjonalności.

Jeśli prosta stronka, to spokojnie da radę. Ale jeśli ma operować na plikach, bazie danych, download/upload, formularze, systemy szablonów etc. to bez jakiegoś języka server side np. php sie nie obejdzie.

Odpowiedzi

+Tylko jedno wczytanie strony

Ale pamiętaj żeby zrobić tak, żeby roboty to wszystko widziały, wymaga trochę pracy, każda zmiana też będzie wymagała pracy. Grunt to wszystko przemyśleć.

No i nie wiem czy jedno wczytanie strony jest takim plusem. A jak podać wtedy link znajomemu?

+Mniejsze obciążenie serwera

niekoniecznie, możliwe że tak, wszystko zależy od rozwiązań

-Obciążenie pamięci RAM

no to jest kwesta sporna, zależy co będzie dany skrypt robił, bo wiadomo że wyszukiwarka będzie i tak zabierała trochę RAMu niezależnie czy jest to robione w AJAXie czy gołym PHPie. Jeśli chcesz wyświetlić mały fragment tekstu to niewątpliwie generuje to mniejsze obciążenie niż na nowo generowanie strony.

-Obciążenie CPU (nie wiem w jakim stopniu)

i tak i nie, patrz wyżej

Ja radzę robić stronę normalnie w PHP z elementami JS+AJAX. I tyle.

Trochę bez sensu jest pisanie JavaScript + AJAX (Asynchronous JavaScript and XML) - to raz:D Dwa - oczywiście, możesz zrezygnować z jakichkolwiek skryptów, czy czego tam chcesz po stronie serwera, ale chociażby ze względów na bezpieczeństwo niektóre rzeczy nie powinny być realizowane po stronie klienta. Po trzecie - z doświadczenia, małego bo małego, ale własnego mogę stwierdzić, że AJAX to super sprawa, ale trzeba pamiętać o utrzymaniu równowagi pomiędzy klientem a serwerem.

Oczywiście PHP też musi być bo przecież jakoś te dane z bazy Ajaxem pobierać trzeba ale taki skrypt może być bardzo prosty. Tak sobie pomyślałem że strona zawierająca dużą ilość treści typu Forum, Newsy nie jest dobrym pomysłem natomiast jakaś gra przeglądarkowa może chodziła by lepiej. Dla przekładu takie ogame teraz są nowe Uni z nowym wyglądem strony ładują się koszmarnie wolno bo są ciężkie grafiki i myślę że taki zabieg nadał by rozgrywce większego tępa.

Zastanawia mnie tylko czy taka transmisja danych przez Ajax nie jest wolniejsza od takiego zwykłego wczytywania.

Przecież grafika nie jest żadnym problemem, odpowiednie ustawienia cache i wszystkie obrazki czy pliki js/css będą ściągane tylko raz. aplikacja oparta o AJAX może oznaczać większe obciążenie serwera bo np. musisz co jakiś czasu sprawdzać czy coś nie zmieniło na serwerze. Nawet jeśli będzie się to szybko wykonywać to serwery nie lubią zbyt dużej ilości żądań na sekundę.

Możesz trzymać część danych po w przeglądarce (potrzebne Google Gears albo przeglądarka która obsługuje tę część HTML5) ale synchronizowanie tego na pewno nie będzie łatwe ani przyjemne.

To wszystko zależy od tego jakie ma być przeznaczenie strony. Takie zabiegi wcale też nie będą prostsze niż taka synchronizacja, nie musi też mieć dużej ilości zapytań bo to tylko od programisty zależy kiedy takie żądania są wysyłane.