2010-10-05 15 views
12

Pracuję nad aplikacją internetową (opartą na Rails 3). I naprawdę nie podoba mi się czas potrzebny na wygenerowanie strony - w zależności od wyświetlanych danych zajmuje to 2,5, a nawet 4 sekundy.Jaki jest rozsądny czas na wygenerowanie strony internetowej?

Po prostu zastanawiałem się, jaki jest średni czas potrzebny na wygenerowanie strony w aplikacjach. Mówiąc, że sprawdzasz czas generowania, np. to 750ms i myśli "Ok, powinno być dobrze, nawet bez buforowania". Lub gdy zobaczysz 1,5sek, myślisz "O mój Boże, użytkownik nie będzie tak długo czekać i opuści stronę"

+0

Co robi twoja aplikacja? – Gumbo

+0

@Gumbo, wyświetla różne dane statystyczne – fantactuka

+0

Oczywiście powinieneś spróbować zrobić to tak szybko, jak to możliwe, ale prędkość naprawdę zależy od tego, co robisz. Rozdziel także czas na części. Na przykład będzie czas na dostęp do bazy danych i czas renderowania strony. Który zabiera dużo czasu? Jeśli to renderowanie, prawdopodobnie używasz dużo javascript. Czy ten javascript może być podzielony na żądanie ajax, które ładuje się po załadowaniu strony do przeglądarki. Jeśli jest to baza danych upewnij się, że robisz wszystko, co musisz zrobić, aby zoptymalizować. Chętne ładowanie, odpowiednie indeksy itp. – sosborn

Odpowiedz

13

Istnieje ogromna ilość danych badawczych dotyczących czasu od zapytania do renderowania i doświadczenia użytkownika. Polecam lekturę this useit.com article. Po tym wszystkim Google zintegrowanym prędkości stronę w wynikach dla jakiegoś powodu;)

The 3 limity odpowiedź czasie są samo dziś, gdy pisałem o nich w 1993 roku (na podstawie 40-letniego badania przez pionierów czynników człowiek):

  • 0.1 sekundy daje poczucie chwilowej odpowiedzi - czyli wynik czuje się jak to było spowodowane użytkownikowi, a nie komputer.Ten poziom reaktywności jest niezbędne do wsparcia uczucie bezpośredniego manipulacji (bezpośrednia manipulacja jest jednym z kluczowych technik GUI do zaangażowania użytkownika wzrost i kontroli - się więcej o tym, zobacz nasze Zasady seminarium Interfejs Design) .
  • 1 sekunda utrzymuje płynność myśli użytkownika. Użytkownicy mogą wykryć opóźnienie , a tym samym wiedzieć, że komputer jest generujący wynik, ale nadal czuje się pod kontrolą ogólnego doświadczenia i że przesuwa się swobodnie, zamiast czekać na komputerze . Ten stopień reakcji na odpowiedź jest potrzebny do dobrej nawigacji .
  • 10 sekund zachowuje uwagę użytkownika. Od 1 do 10 sekund użytkownicy na pewno czują się pewnie na łasce komputera , ale mogą sobie z tym poradzić szybciej, ale . Po 10 sekundach, , zaczynają myśleć o innych rzeczach, , przez co trudniej jest odzyskać ich mózgi, gdy komputer wreszcie zareaguje.

10-sekundowe opóźnienie często powoduje, że użytkownicy opuszczają witrynę natychmiast. I , nawet jeśli pozostaną, trudniej będzie im zrozumieć, co się dzieje, , co zmniejsza prawdopodobieństwo, że osiągną one powodzenie w trudnych zadaniach.

Jako ogólną zasadę, należy zawsze dążyć do równowagi czasu i czasu optymalizacji. Nie spędzaj dni na optymalizacji piekła z jednej rutyny, gdy twoje obrazy nie są poprawnie skompresowane, lub twoje skrypty/css nie są połączone. Tak, szybszy jest lepszy, ale 90-procentowy wzrost w generowaniu strony poprzez ustawienie inteligentnej pamięci podręcznej bije 10-procentowy wzrost po tygodniu dostosowywania algorytmu.

Nie należy też zbytnio zaglądać w czasy pierwszego renderowania, gdy struktura musi załadować wszystko, ale użyć testów warunków skrajnych, buforowanych lub nie, do symulacji różnych sytuacji.

Teraz niektóre dane; niektóre z najnowszych serwisów, w których pracowałem, wykorzystywały DotNetNuke, ogromny open-source CMS, i Asp.Net MVC, gdzie jesteś bliżej metalu. Średni czas strony ze średnimi zapytaniami do bazy danych wynosił 600-700 milisekund dla DotNetNuke. Dla Asp.net MVC, to 70-100 milisekund ... Użytkownicy naprawdę lubią ten drugi :)

5

Nie ma "właściwej" odpowiedzi na to - im szybciej, tym lepiej. Osobiście zwykle dążę do tego, aby < 200ms, choć wiem z doświadczenia, że ​​może być dość trudno osiągnąć to w Railsach na czymkolwiek innym niż proste aplikacje. Spróbuj dowiedzieć się, gdzie znajdują się wąskie gardła i zapisuj w pamięci podręcznej, co możesz.

Edytuj: Wydaje się, że istnieje pewne zamieszanie między czasem generowania strony a czasem renderowania strony. Oczywiście celem jest szybka strona render, a na większości witrynach takich jak zmniejszenie żądań HTTP, gzipowanie CSS/JS to miejsce, w którym można uzyskać większość szybkich wygranych. Ale jeśli sama strona może wygenerować 4-5 sekund, prawdopodobnie masz rację, że Twoja aplikacja jest tam, gdzie powinieneś zacząć.

+0

Myślę, że jednym z najważniejszych momentów jest ** dostrzegany ** przez użytkownika. Wiele optymalizacji stosowanych obecnie na stronach internetowych nie uwzględnia kodu, ale skupia się na asynchronicznym ładowaniu javascript i równoległym pobieraniu zasobów. – samy

0

Zmierz swój wynik apdex i zobacz, jak działa. To da ci przybliżoną wskazówkę. Stamtąd możesz zdecydować, w jaki sposób chcesz zwiększyć wydajność.

To zależy również od Twojej witryny; aplikacja systemowa dla biznesu lub oprogramowania jako usługa (SaaS)? Jeśli jest to aplikacja systemowa, użytkownicy zmuszeni są jej użyć do wyegzekwowania wydajności. Jeśli jest to SaaS, to im wyższy wynik apdex, tym większa szansa na utratę zainteresowania użytkownika.

Istnieje kilka klejnotów, które mierzą wydajność i raportują, co to jest apdex.

Tutaj jest trochę więcej informacji: http://apdex.org/blog/?p=630

2

To zależy od tego, czy nic nie jest wyświetlane na 2,5-4 sekund, lub że użytkownik już widzi (część) strony od samego początku, a zakończy ładowanie całkowicie po 2,5-4 sekundach. W takim przypadku użytkownik nie doświadcza obciążenia 2,5-4 sekund. Weź stronę internetową http://www.nytimes.com/; Widzę większość z nich od razu, ale według Web Inspectora zajmuje to 1,94 sekundy, aby mogło zostać całkowicie załadowane.

Należy pamiętać, że prędkość będzie również zależeć od przeglądarki, komputera, połączenia internetowego. To, co jest szybkie, może być wolniejsze dla innych.

-4

Moja osobista zasada - żadna strona nie powinna zająć więcej niż 0,05 sekundy, lub masz kłopoty.

Tak długo, jak piszesz odpowiedni kod, nie musisz poświęcać dużo czasu na optymalizację, aby zachować mniej niż 0,05.

Jeśli trzymasz się gigantycznych szkieletów, to masz pecha.

+0

Wow, masz strony, które są tak szybkie, kudos! Musisz zgadywać pamięć podręczną żądań db, chyba. Nad czym pracujesz, struktura baremetalowa? – samy

+0

Z ciekawości, czy potrafisz odróżnić od .1 sekund do .05 sekund? Jeśli tak, to czy różnica naprawdę Cię niepokoi? Pytam tylko dlatego, że .05 wydaje się niesamowitą dowolną liczbą. – sosborn

+0

Tak, ważne jest, kiedy zacznie się rzeczywisty ładunek. To nie jest baremetal, jest po prostu lekki i pamięć podręczna. – BarsMonster

Powiązane problemy