6 października 2009, 13:05 dario Komentarze (0)

Mini Static Content Delivery

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. :)

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

Tagi:

Projekty

Komentarze zablokowane

O autorze

Dariusz Gil - projektant i programista aplikacji internetowych budowanych na platformie Microsoft w technologii ASP.NET (C#) oraz MS SQL Server. Obecnie właściciel (narazie :)) jednoosobowej firmy Softio.

Filtruj używając APML