Wykorzystanie cookies w jQuery

W trakcie budowy nowej odsłony Webyourself zmierzyliśmy się z problemem dużej ilości danych koniecznych do pobrania przy pierwszym wejściu na stronę główną. Rozwiązaliśmy go wdrażając preloader, połączony z nieskomplikowaną animacją treści, która pojawia się po zakończeniu ładowania (mam tutaj na myśli wjazd słów "Droga na internetowe szczyty..."). Efekt w naszej opinii jest przyjazny dla oka, jednak w czasie testów witryny uciążliwe było patrzenie nań przy każdym kolejnym przejściu do strony głównej. Postanowiliśmy to zmienić, a z pomocą przyszły nam pliki cookies.

Założenie było następujące: wyświetlamy przy pomocy jQuery preloader i animację przy pierwszym wejściu użytkownika na stronę. W tym samym czasie zapisujemy w jego przeglądarce ciasteczko z informacją, że ta akcja została wykonana. Przy kolejnych odwiedzinach strony głównej jQuery sprawdza czy cookie istnieje: jeśli tak, nie pokazujemy ani preloadera, ani animacji.

Jeżeli nie widzieliście jeszcze naszego wpisu jak zbudować prosty preloader, zajrzyjcie tutaj.

Jak to wygląda w praktyce?

Na początek konieczne jest umieszczenie w tagu <head> naszej witryny odnośnika do biblioteki jQuery oraz pluginu jQuery cookie (tutaj znajdziecie link do niego). Następnie przed zamknięciem tagu </body> wstawiamy taki kod:

<script type="text/javascript">
  $(function () {
    
    // sprawdzamy czy plik cookie jest już zapisany w przeglądarce 
    if (jQuery.cookie('webyourself_preloaded') != '1') {
        
        // jeśli nie
        
        // tutaj wstawiamy kod naszego preloadera oraz animację
        
        // a także zapisujemy plik cookie
        $.cookie('webyourself_preloaded', '1', { expires: 2 });
        
    } else {
        
        // jeśli plik cookie jest już zapisany
        
        // chowamy warstwę z preloaderem
	$('#preloader').fadeOut();
    }
  });
</script>

W kodzie umieściłem komentarze za co odpowiada dany fragment. Szerzej wyjaśnię tylko sposób zapisania i odczytania ciasteczek, który odbywa się w powyższym przykładzie.

Zapisanie cookie:

$.cookie('webyourself_preloaded', '1', { expires: 2 });

'webyourself_preloaded' to nazwa naszego ciasteczka,
'1' to wartość jaką ono przyjmuje,
{ expires: 2 } - w tym miejscu decydujemy przez ile dni cookie będzie przechowywane w przeglądarce. W naszym przypadku oznacza to, że jeśli odwiedzicie stronę główną w ciągu 2 dni od pierwszej wizyty, nie zobaczycie preloadera i animacji na wejściu.

Odczyt cookie odbywa się w następujący sposób:

jQuery.cookie('webyourself_preloaded')

Jeśli macie jakieś pytania, piszcie w komentarzach.