Projektuję modułową aplikację RIA opartą na architekturze MVC po stronie klienta cienkiego serwera. Obecnie aplikacja jest kompletna tylko w zakresie 10% i jako taka nie jest za późno na wprowadzenie zmian w projekcie.Jak zoptymalizować aplikację opartą na sieci Web przed opóźnieniem ze względu na wiele asynchronicznych żądań w tle?
Aplikacja została zaprojektowana w taki sposób, że początkowo ładuje się przy bardzo małej powierzchni, a w zależności od czynności wykonanej przez użytkownika duże ilości danych są pobierane asynchronicznie. Te dane mogą obejmować zarówno dane przechowywane na moich serwerach, jak i dane z zewnętrznych usług internetowych, w tym serwisy społecznościowe i usługi mikroblogowania.
Jednak to, co mnie niepokoi, to czy jest możliwe, że wiele ciężkich żądań ajaxów działających w tle blokuje przeglądarkę? Niedawno zauważyłem poważne problemy z opóźnieniami w niektórych usługach agregacji treści społecznościowych i po analizie kodu po stronie klienta zaskoczyło mnie, że ślad po stronie klienta był niewielki, w granicach 300 KB. Jednak podczas uruchamiania aplikacji bardzo często przeglądarka (zarówno Firefox, jak i IE) zawieszała się i trwała kilka sekund, aby odzyskać. Po przeanalizowaniu asymetrycznych żądań okazało się, że aplikacja pobierała jednocześnie zawartość użytkownika z Gmaila, Facebooka i Twittera i przesyłając je do DOM i pobierała zbyt dużo zasobów pamięci.
Byłoby wspaniale, gdyby ktoś mógł wskazać mi pewne wskazówki/najlepsze praktyki, aby zapobiec takim problemom. Byłoby wskazane napisanie niestandardowego skryptu owijającego, który ładuje zawartość w tle sekwencyjnie we wcześniej ustalonej kolejności ważności, zamiast ładować je wszystkie równolegle, co może w końcu doprowadzić do kilku wywołań zwrotnych równolegle.
Każda rada byłaby wysoko ceniona.
Dziękuję za fantastyczną odpowiedź. Ustalanie priorytetów dotyczących treści było czymś, co już robiłem, a ja analizowałem technologię COMET i oceniam, czy była warta inwestycji. Twoja wskazówka dotycząca opóźniania żądań aktualizacji według czynników czasu jest jednak sprytna. Nie byłem zaznajomiony z technologią bramki ESI. Zapoznam się z tym. Końcówka IE jest nieco dziwna, ale nadal ją sprawdzę. Doceniam twoją pomoc. – lorefnon