Następny krok rozwoju Webu: całkowicie asynchroniczne interfejsy
Jeśli spojrzymy na standardowy sposób, w jaki budowane są strony internetowe, łatwo zauważymy ich główną wadę: przy okazji każdej operacji odświeżana jest cała strona, zarówno podczas przeglądania treści, jak i przy edycji danych.
Oczywiście coraz więcej twórców stron radzi sobie z tym, wykorzystując Ajaksa, ale potencjalne możliwości obejścia tego problemu są znacznie większe, niż to co widzimy dziś w Sieci.
Alex MacCaw przedstawił wczoraj sposób, w jaki radzi sobie z problemem komunikacji z serwerem za pomocą asynchronicznego interfejsu, który ma zwiększyć obserwowaną przez użytkownika szybkość strony.
Nie jest to jedynie sztuka dla sztuki. Programista przytacza dane, według których zwiększenie czasu ładowania Amazona o 100 ms spowodowało spadek sprzedaży o 1%, Google zwiększając czas ładowania o 500 ms, doprowadziło do zmniejszenia liczby zapytań o 20%, a Yahoo! przez zwiększenie czasu ładowania strony o 400 ms spowodowało wzrost liczby wycofań ze strony o 5-9%.
Dla sklepów internetowych krótszy czas ładowania się strony przekłada się więc bezpośrednio na statystyki i w konsekwencji na zyski.
MacCaw przedstawił demonstrację interfejsu wykorzystującego standardowe zapytania do serwera oraz wersję zbudowaną z wykorzystaniem interfejsu asynchronicznego. Zauważcie, że w tej drugiej demonstracji zapisywanie czy edycja stron działają niemal natychmiast.
Wersja asynchroniczna została zbudowana po stronie serwera na Railsach, a po stronie UI na Spine i Ajaksie. Kod źródłowy można zobaczyć tutaj. Szczególnie interesujący jest kontroler.
Tak wygląda przykład zmiany nazwy strony i jej zapisu:
page = Page.find(1)
page.name = "Hello World"
page.save()
Jak widać, interfejs aktualizuje się natychmiast, natomiast zapis do bazy przebiega asynchronicznie. Ryzykowne, prawda? Jak jednak uważa McCow, w wielu wypadkach błędy zapisu asynchronicznego są wyjątkami od reguły, którą są poprawne zapisy. Dlatego też, gdy wystąpi błąd można zawsze poinformować o tym użytkownika i odświeżyć widok, aby pokazać poprzednie wartości.
Inne pojawiające się problemy to walidacja, którą McCow proponuje powielić po stronie klienta, oraz generowanie identyfikatorów. W tym wypadku stosuje on tymczasowe identyfikatory po stronie klienta, do czasu uzyskania „oficjalnych” z serwera.
Podejście McCowa jest świetne. Nawet Google pracuje już nad obsługą zapytań JavaScriptu, więc i problem pozycjonowania niedługo zostanie rozwiązany. Tak powinny być budowane wszystkie strony internetowe – oprócz stron banków oczywiście, chyba że w części systemu odpowiedzialnej za zmniejszanie salda. Zapoznać się ze szczegółami rozwiązania możecie tutaj.
źródło: alexmaccaw.co.uk, pic: sxc.hu/svilen001
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
19
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Z okazji wypuszczenia akcji Facebooka przypomnijmy sobie, kim jest Zuckerberg
10
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Co czeka programistów po czterdziestce?
27
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Społeczność
m_gol @_Igancio:
Chyba pomyliłeś gazetę z natemat.pl...
m_gol Niestety na razie nie wszędzie Flasha da się zastąpić, nawet w takich...
stop_gupota "Fanatyczny" Diablo 3 jest dopiero od 10 dni.
Mas Ciekawa informacja, ale akurat projekt wytopu stali przez chłopów to był...
_Igancio Poziom artykułu jest bardzo niski ! Niczego się nie dowiedziałem , wygląda...
voluu A ja mam problem. MIanowicie, po dodaniu kodu z tego poradnika miniaturki...
Sebek Pozycjonowanie stron za pośrednictwem firm oferujących
swoje usługi nie...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |









#1 adi_82® 2011-11-17 16:09:09 0
IP: 77.253.223.[...] Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2
#2 Wszerad 2011-11-17 16:35:47 0
IP: 213.17.128.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0a1) Gecko/20111114 Firefox/11.0a1
#3 Subey 2011-11-17 16:53:39 0
IP: 178.37.86.[...] Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0
#4 slawek22 2011-11-18 02:36:52 1
IP: 83.4.103.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
#5 zaggi® 2011-11-18 08:17:58 0
IP: 89.174.8.[...] Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
#6 kallosz® 2011-11-18 10:46:54 0
IP: 87.205.92.[...] Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.41 Safari/535.7
#7 Siof 2011-11-18 14:09:55 0
IP: 83.12.219.[...] Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0
#8 jacek2v® 2011-11-18 17:36:28 0
IP: 178.36.189.[...] Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2