Mini Static Content Delivery

06 października 2009, 13:05

KomentarzeKomentarze: 4 KategorieKategorie: asp.netmvc

Jakiś czas temu pochwaliłem się na blogu Jakuba Binkowskiego, że mam taki fajny modulik do optymalizacji kontentu statycznego. Modulik ten nazwałem w skrócie MSCD, czyli Mini Static Content Delivery.

Pomysł narodził się z powodu braku optymalizacji obsługi kontentu statycznego w aplikacjach asp.net mvc uruchamianych na IIS 6. Ponadto chciałem mieć narządko, które w łatwy sposób pozwoli mi na podmianę poszczególnych elementów kontentu (czy to pliku js, css czy też obrazka) bez martwienia się czy podmienione pliki zostaną poprawnie pobrane przez przeglądarkę.

Co tak naprawdę oferuje MSCD?

MSCD uruchamiany jest jako osobna aplikacja służąca jedynie do serwowania kontentu statycznego. Zaletą takiego rozwiązania jest możliwość podpięcia osobnej domeny i dzięki takiemu zabiegowi:

  • przeglądarka w odwołaniach po kontent statyczny nie będzie wysyłać w nagłówkach naszych ciasteczek (Cookie), które zostały pobrane wcześniej w wyniku działania głównej aplikacji (autentykacja, itp), zawsze to kilka/kilkanaście bajtów mniej
  • przeglądarka może naraz równolegle pobrać dane z dwóch różnych źródeł (dwóch różnych domen)

Osobiście uruchamiam główną aplikację pod domeną www, natomiast kontent statyczny pod domeną static. Przykładem może być strona softio: www.softio.pl - główna aplikacja i static.softio.pl - kontent statyczny.

Ponadto:

Gzip - domyślnie pliki typu js i css są kompresowane. Zmniejsza to zapotrzebowanie na przepustowość łącza, kontent szybciej dociera z serwera do przeglądarki.

Optymalizacja treści - treść plików js i css jest optymalizowana przy pomocy YUICompressor'a. Więcej o działaniu kompresora można poczytać na stronie Yahoo.

Ograniczenie ilość odwołań, czyli Paczki - MSCD w łatwy sposób pozwala na ograniczanie ilości odwołań do serwera dzięki tzw. paczkom. Paczki są to specjalne katalogi, których zawartość jest zbierana jako całość (gzip'owana, optymalizowana) i wysyłana do przeglądarki za pomocą jednego wywołania. Są dwa typy paczek: scripts, czyli pliki typu js oraz styles, czyli pliki typu css.

Agresywne buforowanie po stronie klienta - kontent statyczny automatycznie ma ustawiony odpowiedni nagłówek, który informuje przeglądarkę, że dany kontent jest niezmienialny przez następne 365 dni. Dzięki temu po pierwszym pobraniu przeglądarka zapisuje dane w buforze i nie pyta o nie przy kolejnym wejściu na stronę.

Automatyczne wersjonowanie kontentu - dzięki tej opcji po zmianie któregoś z plików (js, css, obrazek) zostanie wygenerowana nowa wersja kontentu, która (mimo agresywnego buforowania) wymusi pobranie nowych treści z serwera.

 

Więcej o zastosowaniach MSCD oraz przykłady użycia już niebawem. Postanowiłem, że kod MSCD opublikuję na CodePlex jako projekt OpenSource, tak więc... stay tuned. :)

 

EDYTOWANE
Dodam tylko, że MSCD spokojnie można używać także w standardowych aplikacjach ASP.NET. :)

Ten artykuł jest widoczny także na: ZINE.NET

Jeśli spodobał Ci się ten artykuł, to podziel się tą informacją z innymi.

Gravatar
Jakub Binkowski
2009-10-06 13:35

Wygląda super. A więc czekam na linka do CodePlex... :)

Gravatar
k1
2009-10-06 17:07

Czekamy :)

Gravatar
boss
2009-10-19 23:57

Popieram

Gravatar
dario-g
2009-10-20 00:06

Obecnie trochę choruję, ale jak tylko pozbieram siły to będzie tak jak pisałem.

A tym czasem proszę o odrobinę cierpliwości :)

Dodaj komentarz Dodaj komentarz

Twój email (niepublikowany/opcjonalnie):

Twoja strona (opcjonalnie):

Imię i nazwisko/nick (wymagane):

Treść (wymagane):

Chcę być poinformowany o kolejnych komentarzach:

Te pola zostaw puste

Uwaga! Zastrzegam sobie prawo do usuwania obraźliwych i wulgarnych komentarzy.