Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

Przyspieszamy ASP.NET - wstęp

Od dłuższego czasu w pracy zajmuję się tworzeniem biznesowej aplikacji webowej. Słowem wstępu, jest to system wspierający przygotowywanie projektów dofinansowanych z EFS PO KL, zrealizowany w modelu Software as Service (reklama dla zainteresowanych: www.webefs.pl). Aplikację tworzymy głównie z wykorzystaniem ASP.NET 3.5 (klasycznego – nie MVC), a w tym ASP.NET AJAX. Z ciekawostek ważnych w kontekście tego wpisu, jej interfejs graficzny zbudowaliśmy w oparciu o Office Ribbon UI, a więc jest relatywnie bogaty.

Nie tak dawno musiałem stawić czoła chyba najstarszemu problemowi w informatyce – system działa wolno. Niestety, problem nie zależał od obciążenia serwera; był zauważalny przy wręcz prawie zerowym ruchu. Dlatego optymalizację logiki aplikacji oraz jej interakcji z bazą danych, o których mniejsze lub większe pojęcie miałem, musiałem zostawić na później i zabrać się za szukanie rozwiązania gdzieś indziej. Otóż tzw. “wolne działanie” miało dwa najważniejsze symptomy:

  1. Strony ładowały się długo.
  2. Użytkownicy mieli odczucie, iż strony po załadowaniu działały wolno – jakby z opóźnieniem (chodzi tutaj o takie kwestie jak JavaScript, efekty “hover” czy samo przewijanie strony).

I najważniejsze – o ile w Chrome i Firefox prędkość była znośna, o tyle w IE (zwłaszcza 7, mniej 6 i 8) nie dało się praktycznie korzystać z aplikacji.

Oczywiście, osoby zajmujące się od dłuższego czasu tworzeniem witryn webowych, na pewno wiedzą na czym może tutaj polegać problem i jak mu zaradzić. Dla mnie jednak w owym czasie była to terra ignota. Na szczęście szybko trafiłem na bardzo ciekawą stronę:

Best Practices for Speeding Up Your Web Site

W najbliższym cyklu postów postaram się przedstawić wnioski, jakie wysnułem podczas wdrażania części z rozwiązań zaprezentowanych w powyższym artykule. W szczególności postaram się skoncentrować na praktycznych aspektach optymalizacji aplikacji web w technologii ASP.NET AJAX na serwerze IIS 6 i 7. Mam nadzieję, ta wiedza komuś się kiedyś przyda.

Niestety, w projekcie, nad którym pracuję, nie przyjąłem żadnych naukowych metod mierzenia prędkości działania stron, więc nie dysponuję danymi pokazującymi czarno na białym, iż wprowadzone rozwiązania przyczyniły się do np. skrócenia czasu ładowania stron przeciętnie o x %. Musicie zadowolić się jedynie stwierdzeniem, iż różnicę widać gołym okiem i jest znacząca ;).

Dla zachęty do przeczytania przyszłych postów z tej serii dodam, iż niektóre z prezentowanych rozwiązań są prawie idealne – wymagają małego nakładu pracy, dają widoczny efekt i praktycznie nie powodują efektów ubocznych.

Pierwszy odcinek z tej serii – już niebawem!

Opublikowane 20 sierpnia 2009 22:24 przez jakubin
Filed under: ,

Komentarze:

# re: Przyspieszamy ASP.NET - wstęp

Jak juz jestesmy w temacie wydajnosci, przygladales sie moze blizej Velocity?

21 sierpnia 2009 11:41 by mgrzeg

# re: Przyspieszamy ASP.NET - wstęp

@mgrzeg: Na razie tylko bardzo oględnie. Natomiast być może niedługo będę miał okazję zająć się tematem głębiej.

21 sierpnia 2009 12:01 by jakubin

# re: Przyspieszamy ASP.NET - wstęp

czekamy :)

21 sierpnia 2009 12:52 by Łukasz

# re: Przyspieszamy ASP.NET - wstęp

Kurcze, ukradłeś mi temat na serię postów.

Od roku posiadam swój autorski modulik, który robi to co jest wszystko na tej witrynie (chcialem go opisać).

Dzięki temu modulikowi YSlow na moich stronach nie schodzi poniżej oceny B, a to oznacza, że stronki ładują się bardzo szybko przy pierwszym załadowaniu i błysssskawicznie przy kolejnych (jeśli ktoś nie czyści kesza w przeglądarce). :)

Wystarczy wejść na moją stronkę http://softio.pl i zajrzeć do źródła.

To co rzuca się odrazu w oczy to usunięte formatowanie (białe znaki), wersjonowane pliki statyczne z linkami takimi jak:

http://static.softio.pl/styles/main_v66b56d35.css

oraz GZIP, ponadto optymalizacja css i js'a po stronie serwera, cache w przeglądarce, sprite's, dedykowana aplikacja na kontent statyczny, zmniejszenie wywołań do serwera po ten kontent, itp :)

A to wszystko robi z automatu, ja tylko podgrywam pliki :)

Mimo to czekam na Twoje doświadczenia i spostrzeżenia :)

24 września 2009 00:56 by dario-g

# dario-g : Mini Static Content Delivery

6 października 2009 13:05 by dario-g : Mini Static Content Delivery

# Mini Static Content Delivery

Mini Static Content Delivery

15 listopada 2010 07:53 by Dario-G
Komentarze anonimowe wyłączone

About jakubin

MVP w kategorii C#, MCP. Aktualnie pracuje w Webstruments.pl jako programista C#.