wtorek, 15 czerwca 2010

Optymalizacja - od czego zacząć?

Czy należy optymalizować serwisy internetowe? Jeżeli chcemy, aby prezentowana przez nas treść miała chociaż potencjalną szansę dotrzeć do użytkownika to odpowiedź jest prosta – TAK! W innym przypadku użytkownik znudzony przeciągającym się oczekiwaniem na wyświetlenie treści z pewnością opuści naszą stronę i trefi do konkurencji, która była w stanie stworzyć serwis działający wystarczająco szybko. To ostatnie określenie jest oczywiście problematyczne, ale zajmiemy się nim następnym razem starając się ustalić "co to znaczy wystarczająco szybko?". Teraz natomiast rozpatrzmy kwestię od czego należy rozpocząć planowanie przyspieszania naszej aplikacji internetowej.

Wyciśnięcie maksymalnej wydajności z każdego elementu jest stanem równie pożądanym co niewykonalnym. Proces taki wymagałby zazwyczaj prześledzenia każdego nawet najmniejszego elementu, zbadania jego wpływu na pozostałe elementy, kolejnych faz optymalizacji i pomiarów. W efekcie konieczne byłoby gruntowne przebudowanie całego sytemu, często wiążące się również ze zmianami sprzętowymi. Proces taki byłby niezwykle drogi i czasochłonny a osiągnięty efekt mógłby nie być wart takich poświęceń. Dlatego warto zoptymalizować te czynniki, które mają największy wpływ na czas jaki użytkownik musi poświęcić na otrzymanie żądanej treści. Jeżeli uda nam się przyspieszyć o 30% elementy odpowiedzialne za 80% czasu wyświetlania strony, to osiągniemy więcej niż przez zredukowanie do zera czasu przeznaczanego na pozostałe 20%. Dlatego skupić należy się na tych elementach, które są najbardziej czasochłonne, a które można znacznie przyspieszyć bez całkowitej przebudowy systemu i ponoszenie znacznych kosztów.

W przypadku wielu stron internetowych podstawowym obszarami zainteresowania powinny być następujące kwestie:
- zmniejszenie ogólnego rozmiaru strony, w szczególności plików graficznych oraz stylów CSS i kodu JavaScript
- zmniejszenie ogólnej liczny żądań HTTP
- wykorzystanie buforowania elementów przez przeglądarki

Cele te da się z dobrym rezultatem osiągnąć poprzez optymalizacje plików graficznych, stosowanie CSS Sprite, kompresję treści przesyłanej do przeglądarki, zarządzanie nagłówkami Expires, odpowiednie rozmieszczenie elementów w dokumencie HTML oraz optymalizację struktury plików CSS i JavaScript. Co więcej zabiegi te pozwalają w większości przypadków nawet dwukrotnie przyspieszyć czynniki odpowiedzialne za 60 – 80% czasu oczekiwania na wyświetlenie strony.

Dodatkową zaletą jest również obniżenie kosztów funkcjonowania strony poprzez zmniejszenie ruchu sieciowego przy nie zmienionej liczbie wyświetleń strony.