Akceleracja generowania stron

Czas ładowania się strony to bardzo ważny aspekt każdego sklepu internetowego, od którego zależy to czy potencjalny klient będzie chciał dalej przeglądać nasz asortyment czy zostanie zniechęcony tym, ile musi czekać na załadowanie się poszczególnych elementów. Dzięki użyciu wielu różnych systemów akceleracji generowania stron jesteśmy w stanie zapewnić kilkukrotnie krótszy czas ładowania zawartości.

optymalizacja czasu ładowania strony po stronie serwera

Wyzwania stawiane infrastrukturze serwerowej każdego sklepu na potrzeby prezentacji strony sklepu w przeglądarce

Aby strona internetowa sklepu została zaprezentowana w przeglądarce klienta, po drodze zachodzi wiele procesów, czasem bardzo czasochłonnych. W IdoSell Shop dbamy o to, by konsumenci widzieli na stronach sklepu aktualne informacje, dzięki którym bez żadnych obaw i przeciwności dokonają zakupu.

Jednymi z informacji, które negatywnie wpływają na wrażenia zakupowe w sklepię są nieaktualne dostępności towarów oraz nieprawidłowe ceny. Nie będzie to problemem w przypadku sklepów, które sprzedają w jednym kanale sprzedaży oraz bardzo rzadko zmieniają ceny.

W przypadku IdoSell Shop, w których jedną z najistotniejszych strategii sprzedaży jakie mamy na uwadze jest omnichannel, co wymaga zadbania o aktualne stany magazynowe twojego sklepu przy zamówieniach spływających z kilkudziesięciu nawet kanałów sprzedaży - a to już jest wyzwanie. Tym bardziej, że mówimy o takich kanałach, które samodzielnie potrafią dostarczać olbrzymie wolumeny sprzedaży, co ma miejsce z m.in. Google Shopping, Allegro, eBay, Amazon, Ceneo, Nokaut, Skąpiec czy marektplace'y Carrefour, morele.net

Do tego dochodzą częste zmiany cen dokonywane nie tylko na podstawie informacji napływających z systemów magazynowo-księgowych sklepów, ale także aktualizowane na bieżąco ręcznie (m.in. grupowa edycja cen w towarach) czy automatycznie z hurtowni (m.in.poprzez moduły ciągłej aktualizacji cen w towarach czy inne rozwiązania własne klientów wykorzystujące interface'y API). A to jeszcze nie wszystko, gdyż podczas prezentacji cen należy w nich uwzględnić promocje, rabaty, programy lojalnościowe itp.

Te wszystkie informacje należy przygotować i zaprezentować każdemu klientowi z osobna, by otrzymał przeznaczoną dla niego cenę oraz informację, czy towar jest dostępny, a jeśli nie jest, to kiedy może się go spodziewać.

Aby sprostać temu wyzwaniu nie wystarczy wyłącznie stawiać serwery o coraz większej mocy obliczeniowej. W sumie można, i byłoby to nawet szybkie rozwiązanie ... niestety skutkowałoby tym, że koszt abonamentu musielibyśmy pomnożyć co najmniej 10-krotnie. A my chcemy, by takie kwoty były przeznaczone na zwiększoną sprzedaż w kanałach takich jak IAI Ads Google Shopping, zamiast wydawania ich na infrastrukturę.

page speed test

Akceleracja generowania stron w sklepach IdoSell Shop

Lata doświadczenia w budowaniu rozwiązań e-commerce pozwoliły nam na zbudowanie jednego z najbardziej wydajnych systemów akceleracji generowania stron, który bez problemu potrafi ogarnąć wszystkie przedstawione wyżej wyzwania oraz zaprezentować je na stronie internetowej sklepu IdoSell Shop. Wspomniany system akceleracji każdą przeprowadzaną operację wyłuskującą dane do zaprezentowania na stronie sklepu sprawdza na wielu poziomach, czy zmieniła się ona od poprzedniego zaczytania strony, a jeśli nie, to wykorzystuje ją ponownie. I robi to w sposób możliwie najtańszy dla infrastruktury serwerowej.

Tak działający system akceleracji generowania wbudowaliśmy w kod każdego sklepu i jest on dostępny dla każdego bez dodatkowych opłat!

Na wiele elementów akceleracji mają wpływ właściciele sklepów. Przykładem jednego z takich elementów jest sposób serwowania zdjęć na stronach sklepów. które wykorzystując fakt, że przeglądarki są w stanie wczytywać zdjęcia na stronach w sposób równoległy, a nie po kolei - do czego wymagana jest tylko odpowiednia konfiguracja domeny sklepowej, a co dzieje się automatycznie, gdy domena jest delegowana na serwery IAI.

W innych modułach, jak np. Cache HTML, przedstawiamy jedynie statystyki ich działania, by właściciele sklepów samodzielnie mogli sprawdzić ich skuteczność, a w razie pytań zaproponujemy indywidualne zmiany, gdy mogą pomóc w poprawieniu wyników. Takie zmiany traktujemy indywidualnie dla sklepu z uwagi na m.in. specyfikę przeprowadzania w nich aktualizacji, stosowane formy promocji, czy wielkość ruchu w kategoriach sklepów.

Akceleracja generowania stron może mieć miejsce także w szablonie sklepu. Na potrzeby wszystkich sklepów IdoSell Shop przygotowaliśmy moduły, które potrafią zwracać do przeglądarek nawet pojedyncze elementy stron, które są często aktualizowane w sklepie. Odpowiadają za to specjalizowane bramki Ajax, które w połączeniu ze statyczną stroną zwracającą do okna przeglądarki to co jest niezmienne dla sklepu, uzupełnią ją o informacje np. o cenach, dzięki czemu 99% informacji na stronie jest stałe, a 1% zmienia się dynamicznie. Oddaje to w przybliżeniu nakład pracy jaki potrzebuje infrastruktura sklepu IdoSell Shop na wygenerowanie strony dla kupującego. Czy każdy sklep wymaga takiego podejścia? Oczywiście nie. Takie rozwiązania mamy także gotowe i do wykorzystania samodzielnie przez właścicieli sklepów, lub do wdrożenia przez naszych specjalistów.

Jesteśmy dumni z efektów akceleracji generowania stron w sklepach IdoSell Shop

W efekcie sklepy IdoSell Shop zwracają treści stron internetowych szybko i ... tanio. Szybkość potwierdzają pomiary jakich dokonujemy za pomocą takich narzędzi jak choćby Google PageSpeed Insights.

Odnośnie kosztów generowania stron ... to odpowiedzią powinny być koszty abonamentów, zwłaszcza w porównaniu z dedykowanymi systemami e-commerce.

Dodatkowo warto też pamiętać o elastyczności rozwiązań IdoSell Shop w sytuacji, gdy sklep przygotowuje się do zwielokrotnionego ruchu, a obecne jego pokłady zasobów (pamięć i procesor) mogą spowodować, że strony zaczną się ładować wolniej. Umożliwiamy wtedy skorzystanie z ekspresowego przejścia na wyższy plan abonamentowy, który powinien temu zaradzić. Po zakończeniu "cięższego okresu", sklep ma możliwość powrotu na dotychczasowy plan abonamentowy.

Kiedy stosowanie cache się opłaca?

Najprostsza odpowiedź to: zawsze - i z reguły jest to prawda, jednak oszczędności będą tym większe, im częściej dana strona będzie odwiedzana. Na proces generowania się strony z ofertą sklepu wpływa bardzo dużo czynników - odpowiednie optymalizowanie kodu może zmniejszyć obciążenie serwera lub ilość zapytań do bazy danych, jednak ma pewne granice wyznaczane przez funkcjonalność takich stron, jak np. wyniki wyszukiwania towarów. Serwer, aby wyszukać towary według przesłanych kryteriów a następnie pobrać o nich informacje i ułożyć wyniki w stronę HTML - musi wykonać pewną pracę.

Jednak efekt raz wykonanej pracy może być później wielokrotnie wykorzystany, angażując o wiele mniej zasobów do ponownego zwrócenia zapisanych wcześniej wyników.

Ile jestem w stanie zaoszczędzić na włączeniu cache?

Najprostszym pomiarem, który może wykonać każdy, jest analiza ładowania się stron i porównanie wskaźnika TTFB (Time To First Byte) - jest to czas, który jest potrzebny serwerowi do wygenerowania strony i rozpoczęcia przesyłania odpowiedzi do przeglądarki. W tym czasie mieści się wszystko, co musi zrobić serwer przed wysłaniem informacji do przeglądarki Twojego klienta.

Testując standardową stronę z wynikami wyszukiwania bez włączonego cache, otrzymamy wynik współczynnika TTFB na poziomie 1 sekundy - w najprostszej interpretacji oznacza to, że serwer musiał pracować przez sekundę, aby przetworzyć żądanie, znaleźć towary, ułożyć HTML i zwrócić je do przeglądarki. Drugie zapytanie o te same wyniki, spowoduje, że serwer wykona dokładnie tę samą pracę i czas TTFB będzie porównywalny - za każdym razem serwer pracuje 1 sekundę.

Czasy TTFB dla strony bez cache - Czasy TTFB dla strony bez cache

Przy włączonym cache serwer wykona pierwszą pracę w 1 sekundę, ale zapamięta cały wynik HTML w pamięci i przy pytaniu o tę samą stronę, zwróci zapamiętany wcześniej HTML. Czas takiej operacji przy bardzo dobrym wykorzystaniu cache może zmniejszyć się nawet kilkunastokrotnie.

Czasy TTFB dla strony z cache - Czasy TTFB dla strony z cache

W tym przypadku udało się uzyskać czas TTFB na poziomie 60 milisekund, czyli 16-krotnie mniejszym. Otwarcie tej samej strony po raz drugi zaoszczędziło prawie 95% zasobów Twojego serwera, a im częściej daną stronę otworzą kolejni klienci, tym mniej będzie pracował Twój serwer. Zakładając, że tę samą stronę w określonym czasie otworzy 10 kolejnych klientów, Twój serwer wykona pracę w nieco ponad 1,5 sekundy (generując pierwszą stronę w 1 sekundę a kolejne 9 zwracając w 60 milisekund) zamiast 10 sekund (10 * 1 sekunda), czyli zaoszczędzi prawie 85% zasobów.

Twój sklep jest gotowy na Black Friday, Cyber Monday i Dzień Darmowej Dostawy

Optymalne działanie serwera to nie tylko oszczędność pieniędzy podczas codziennej pracy, to także umożliwienie sprzedaży przy nagłym wzroście ruchu, np. po udanej kampanii opartej o kody rabatowe lub w dni wzmożonego ruchu, czyli m.in. Black Friday, Cyber Monday, Dzień Darmowej Dostawy.

Załóżmy, że Twój serwer obsługuje średnio 5 000 użytkowników w ciągu dnia i pod taką liczbę jest zoptymalizowany. Przy takim ruchu jedna strona z wynikami wyszukiwania towarów otwierana jest średnio co ok. 10 sekund. Co się stanie, gdy taka liczba użytkowników wejdzie na Twój sklep w ciągu 3 godzin? W najlepszym przypadku Twój serwer będzie musiał obsłużyć otwarcie tej strony średnio co 2 sekundy, w najgorszym - rozkład ruchu przy kampanii rabatowej będzie rozkładem normalnym, co oznacza, że w szczytowym momencie Twój serwer będzie musiał jednocześnie obsłużyć nawet 2 tysiące odwiedzających w ciągu kilku minut!

Jak to będzie wyglądało przy serwerze, który jest w stanie wykonać jedną operację na sekundę?

Obciążenie serwera bez cache - Obciążenie serwera bez cache

Już w pierwszej godzinie wzrostu ruchu Twój serwer osiągnie 100% wydajności, kolejne strony będą kolejkowanie i zwracane coraz wolniej, co może skutkować przekroczeniem kilku sekund na ładowanie strony i w efekcie ucieczką klientów z Twojego sklepu.

Jak ten sam ruch rozkłada się w przypadku użycia cache?

Obciążenie serwera z cache - Obciążenie serwera z cache

Dzięki temu, że Twój serwer jest w stanie zapamiętać wyniki wyszukiwania i innym klientom prezentować je bez konieczności skomplikowanych obliczeń, możesz prezentować swoją ofertę bez spowolnień nawet kilkunastokrotnie większej liczbie klientów, zwiększając przychody współmiernie do ruchu, bez ryzyka utraty potencjalnych zysków.