Protokół HTTP jest bezstanowy. Sesje są sposobem na zachowanie stanu klienta w żądaniach HTTP. Możesz to zrobić za pomocą wbudowanej obsługi sesji platformy lub zrób to sam z parametrami ciągu zapytania. Tak czy inaczej, dla wielu zadań konieczna jest pewna koncepcja sesji.
Twój kolega prawdopodobnie nie lubi określonej implementacji lub nie używa sesji zgodnie z przeznaczeniem. Jeśli chcesz zachować informacje o określonym połączeniu klienta w żądaniach HTTP, potrzebujesz trwałej formy sesji.
Następujące problemy są specyficzne dla implementacji:
Nietypowy charakter zmiennych sesji
Globalny zakres zmiennych sesji
Serwery równoważenia obciążenia tracą sesje
Ponowne uruchamianie pul aplikacji / serwerów
Na przykład najczęściej pracuję w PHP i przechowuję informacje o sesji w relacyjnej bazie danych. Więc moje zmienne sesji są wpisane. Równoważenie obciążenia i ponowne uruchomienie serwera nie powodują żadnych problemów z sesją.
Ten jest bardziej interesujący:
Limit czasu sesji powodujący utratę stanu
Sesje są najczęściej przechowywane za pomocą plików cookie. Mogą one zostać usunięte przez klienta w dowolnym momencie. Ale można je również zachować za pomocą parametru ciągu zapytania, a zatem nigdy nie przekraczać limitu czasu na kliencie. Limit czasu serwera zależy od Ciebie. Więc nawet ten problem dotyczy konkretnej implementacji.
Nie odrzucajmy całej koncepcji sesji tylko dlatego, że nie lubimy konkretnej implementacji. Każda dobra struktura aplikacji internetowej ułatwi prawidłowe korzystanie z sesji, aby zachować loginy użytkownika lub zachować wszystko inne, co jest związane z bieżącą wizytą użytkownika. Rekord bazy danych użytkownika może (i powinien) być używany do przechowywania rzeczy specyficznych dla niego po zalogowaniu. Jednak użytkownicy anonimowi mogą mieć tymczasowe informacje, które warto zachować w ich sesji, takie jak krótka lista ostatnio odwiedzanych stron lub preferencja ukryj ogłoszenie, które już widzieli. Zasadniczo tylko mniejsze informacje tymczasowe są odpowiednie do przechowywania sesji.
using things like query string parameters instead
- W tym jednym przypadku zawsze używaj parametrów ciągu zapytania, jeśli to możliwe. Używanie sesji dla tego typu parametru jest delikatne i może wprowadzać dziwne błędy, gdy użytkownicy mają otwarte wiele kart.