AJAX - optymalne wykorzystanie

Witam serdecznie,

Piszę obecnie pewną dość sporą aplikację, w której namiętnie korzystam z ajaksa. I mam w głębi serca trochę wątpliwości, czy słusznie czynie. A oto co te wątpliwości powoduje. Każde zapytanie wysłane do serwera korzysta z jego zasobów. Pewna pula z tych zasobów jest nie zależna od tego, co dostajemy w wyniku tego zapytania. Niestety nie wiem jak duża i znacząca jest to pula, dlatego zakładam ten temat. Piszę aplikację w rubyonrails i zastanawiam się, co jest bardziej opłacalnym:

  1. wczytać dwuelementowy formularz ajaksem czy wrzucić go do nie widocznego diva od razu przy ładowaniu całego dokumentu, a potem tylko go ukazać swiat
  2. wczytywać listy po kilku użytkowników z avatarami ajaksem czy załadować je od razu wszystkie i potem pokazywać je w zależności od tego, co kliknie sobie user?
    Taki youtube właście każdą byle pierdołę ładuje w ajaksie. Jak wy patrzycie na taką sprawę?

pozdrawiam,

Piotr Misiurek

Mi zdrowy rozsądek podpowiada, że jeśli czas renderowania formularza (oraz jego rozmiar) nie wzrośnie zbytnio, jeśli dorzucimy mu kilka dodatkowych tagów to warto je dodać. Zwykle staram się omijać Ajax jeśli nie ma konieczności użycia go. Nie wiem, czy nie bardziej istotnym aspektem niż obciążenie serwera jest szybkość działania i niezawodność (np. na Githubie Ajaksowe zapytania potrafią się ładować w nieskończoność, często nie zwracają uwagi na odpowiedź serwera, tylko wyświetlają na ekranie “settings updated successfully”).

Jeśli to duży portal, na którym będzie wielu użytkowników, to warto również wziąć pod uwagę możliwość statycznego cache’owania stron.
Jeśli niewielka część danych ma być dostosowana do użytkownika, to Ajax jest IMHO niezastąpiony i może znacząco przyczynić się do obniżenia obciążenia serwera.
(Scenariusz jest taki, że serwujesz wszystkim tę samą stronę, a Ajaxem przesyłasz tylko elementy dostosowane indywidualnie).

Ogólna uwaga: jeśli możesz zwiększyć responsywność swojej aplikacji albo zmniejszyć obciążenie serwera, używaj Ajaxa. Jeśli jednak możesz coś załadować “na zapas” (przykłady podane przez Ciebie), to lepiej jest wykorzystać Javascript po stronie klienta.

Korzystanie z Ajaxa powinno ograniczać się do sytuacji, w której nie mamy alternatywy, np. jeśli pomiędzy zmianami stron formularza musimy coś zweryfikować na serwerze, albo nie chcemy tego robić po stronie klienta (np. nie chcemy robić częściowej walidacji w JS, bo i tak będzie ona robiona po stronie serwera, choć o ile pamiętam to jest jakiś plugin, który generował walidatory JSowe na podstawie walidatorów AR).