Content Delivery Network (CDN) dla sklepów Magento

Cel projektu

Standardowo przeglądarka pobierając pliki statyczne (JS, CSS i obrazki) komunikuje się z jednym  serwerem, tym na którym generowana jest strona. W takim wypadku przeglądarka może obsłużyć maksymalnie około 2-3 żądań o pliki w jednocześnie. W sytuacji gdy tych plików jest dużo, np. ponad 100 wczytywanie strony się wydłuża, czasami nawet o kilka sekund.

Dlatego opracowaliśmy sposób na przyśpieszenie pobierania plików statycznych przez przeglądarkę. Metoda ta polega na podzielenie plików dostępnych na stronie sklepu Magento na zestawy, gdzie jeden zestaw plików obsługuje jeden serwer proxy CDN. Takich zestawów jest tyle ile dostępnych serwerów CDN. W rezultacie żądania o pliki statyczne zostają wysłane do wielu serwerów jednocześnie co pozawala na dużo szybsze pobranie wszystkich plików wymaganych przez sklep. 

W tym celu stworzyliśmy rozszerzenie Magento, które dzieli pliki tworzące stronę sklepu Magento na wspomniane zestawy. Dokładniej mówiąc moduł zmienia adresy URL w taki sposób żeby podzielić pliki statyczne między serwery CDN.

Moduł ten pozwala także na uniknięcie sytuacji gdzie podczas następnego wywołania strony adresu URL pobieranych plików zmienią się i będą musiały zostać podobnie pobranie z serwerów CDN. Czyli każdy plik strony zostaje pobrany tylko raz i zostaje przypisany tylko do jednego serwera CDN. Powoduje to też że każdy serwer obsługuje tylko część plików co pozwala na zwielokrotnienie szybkości łącza którym dysponuje sklep Magento.

Synchronizacja plików z głównym serwerem sklepu

Jak na serwery proxy przystało ich działanie jest proste. Podczas zapytania o dany plik przez przeglądarkę taki serwer sprawdza czy nie ma takiego pliku w pamięci podręcznej, a jeśli go nie ma to pobiera go z oryginalnej strony serwisu i zwraca klientowi czyli przeglądarce www. Oczywiście nie można dopuścić żeby tego pliku nie było w tej pamięci podręcznej, dlatego ustala się dość długi czas przedawnienia pobranego pliku np 7 dni. 

Przykład: jeśli dany plik zostanie pobrany np w poniedziałek przez serwer proxy to cały tydzień będzie pobierany przez przeglądarki z serwera proxy, a po tygodniu serwer proxy zaktualizuje go pobierając ten plik z oryginalnej strony. 

Oczywiście w razie modyfikacji klient może bez problemu odświeżyć pamięć cache serwerów proxy z panelu sklepu Magento.

Zabezpieczenia w przypadku awarii jednego z serwerów proxy

Moduł który dostarczamy, posiada opcję automatycznego usunięcia niedziałających adresów URL ze strony Magento, jeśli jakiś z serwerów proxy CDN nie działa prawidłowo. Co 5 minut wykonywany jest test serwerów proxy i aktualizowana jest lista dostępnych serwerów.

Także każdy z naszych serwerów proxy jest obsługiwany przez adres IP który może być przeniesiony na serwer zapasowy w kilka minut. Pozwala to na szybką interwencję i zastąpienie serwera innym który działa poprawnie. 

Kompatybilność

Nasze serwery CDN są w pełni kompatybilne z takimi testerami stron internetowych jak YSlow i są poprawnie przez nie wykrywane.

Cookieless domain

Serwery CDN posiadają ciekawą funkcjonalność pozwalającą na hostowanie plików z domen które nie wysyłają ciasteczek do przeglądarki klienta. Sprawia to że zapytania o pliki zwracane są do przeglądarki klienta jeszcze szybciej.

Konkurencyjne rozwiązania

Niektóre serwisy prowadzą inny praktyki odnośnie CDN:

  • ruch przekierowywany jest do jak najbliższego serwera - oczywiście to zwiększa szybkość przesłania plików, ale dalej występuje kolejka bo wszystkie żądania obsługuje jeden serwer, nie występuje tu też zwielokrotnienie szybkości łącza,
  • wysyłanie obrazków produktów Magento na serwer CDN przez FTP podczas upload-u pliku - te same problemy co poprzednio plus możliwość awarii danego serwera.

Wymagania

Aby skorzystać z naszego rozwiązania wystarczy zainstalować dostarczony przez nas moduł i ustawić odpowiednie ścieżki do sklepu w System -> Konfiguracja -> Sieć -> Niezabezpieczony 

Ceny

  • dla nowych klientów hosting-magento.pl pierwsze pół roku za free, następnie 20 zł netto m-c,
  • dla obecnych klientów 30 zł netto m-c,
  • dla innych klientów których sklepy nie są hostowane w naszej firmie 50 zł netto m-c.

Podsumowanie

Plusy zastosowanie CDN:

  • liczba plików statycznych pobieranych przez przeglądarkę klienta w jednostce czasu wzrasta kilka razy,
  • zwielokrotnienie szybkości łącza,
  • zmniejszenie obciążenia serwera poprzez podzielenie zasobów na wiele maszyn,
  • hostowanie zdjęć z domen bezciasteczkowych,
  • synchronizacja plików na serwerach CDN wykonuje się automatycznie bez konieczności.

Minusy:

  • dłuższe oczekiwanie przez przeglądarkę klienta na pliki które jeszcze nie znajdują się na serwerach proxy CDN,
  • po modyfikacji danego pliku statycznego trzeba go ręcznie (z panelu Magento) odświeżyć na serwerach pośredniczących.