przetwarzanie severside vs przetwarzanie po stronie klienta + ajax?

szukam ogólnych rad i / lub myśli ...

tworzę to, co myślę, że jest bardziej aplikacją internetową niż stroną internetową, ponieważ zamierzam być jak aplikacja gmail, w której strona pozostanie otwarta przez cały dzień, podczas gdy aktualizacje będą „wypychane” na stronę (dla Zainteresowany używam techniki programowania komet). Nigdy wcześniej nie stworzyłem strony internetowej, która byłaby tak bogata w ajax i javascript (jestem teraz wielkim fanem jquery). z tego powodu raz po raz, gdy wdrażam nową funkcję, która wymaga dynamicznej zmiany interfejsu użytkownika, o której serwer musi wiedzieć, napotykam to samo pytanie:

1) Czy powinienem wykonać całe przetwarzanie na kliencie w javascript i wysłać z powrotem tak mało, jak to możliwe za pośrednictwem ajax lub 2) Czy powinienem wysłać żądanie do serwera za pośrednictwem ajax, czy serwer wykona całe przetwarzanie, a następnie odeśle nowy html . następnie na odpowiedzi ajax wykonuję proste przypisanie z nowym HTML

byłem skłonny zawsze podążać # 1. Ta aplikacja internetowa wyobrażam sobie, że może być dość gadatliwa ze wszystkimi żądaniami ajax. moja myśl jest taka, aby zminimalizować jak najwięcej rozmiarów żądań i odpowiedzi, i polegać na ciągle ulepszanych silnikach javascript, aby wykonać jak najwięcej przetwarzania i aktualizacji interfejsu użytkownika. odkryłem z jquery mogę zrobić tak wiele po stronie klienta, że ​​wcześniej nie byłbym w stanie zrobić tego bardzo łatwo. mój kod javascript jest znacznie większy i bardziej złożony niż mój kod serwera. Są też proste kalkulacje, które muszę wykonać, a także popchnąłem to po stronie klienta.

Domyślam się, że główne pytanie, jakie mam, to czy powinniśmy ZAWSZE dążyć do przetwarzania po stronie klienta przez przetwarzanie po stronie serwera, kiedy tylko jest to możliwe? Zawsze czułem, że im mniej serwerów, tym lepiej dla skalowalności / wydajności. niech moc procesora klienta wykona całą ciężką pracę (jeśli to możliwe).

myśli?

questionAnswers(9)

yourAnswerToTheQuestion