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.NETJeśli spodobał Ci się ten artykuł, to podziel się tą informacją z innymi.