Sprawdzanie aktualności rekordu
Gdy klient posiada dany zasób w cache’u, a następnie wykonuje zapytanie o ten sam zasób, konieczne jest sprawdzenie jego aktualności. Jest to wykonywane za pomocą zapytań warunkowych. Polegają one na wysłaniu pytania o zasób, jednak zasób ten zostanie przesłany z powrotem tylko w przypadku spełnienia określonych warunków.
W przypadku sprawdzania aktualności rekordu stosuje się dwa podejścia:
- Sprawdzenie po dacie ważności zasobu
- Sprawdzenie po „sumie kontrolnej” zasobu
Oba sposoby zostaną później szerzej omówione.
Serwer może odpowiedzieć na takie warunkowe zapytanie na następujące sposoby:
- Może wysłać odpowiedź ze statusem 304 (Not modified) – nie powoduje to aktualizacji treści przechowywanego zasobu, a jedynie jego daty i daty ważności (jeżeli były one uwzględnione w odpowiedzi serwera). W tym przypadku treść nie jest ponownie przesyłana, jako wynik zapytania zwracana jest wersja znajdująca się w cache
- Może wysłać odpowiedź ze statusem 200 (OK). Wymusza zaktualizowanie bieżącej przechowywanej zawartości i to właśnie ona jest używana
- W przypadku zwrócenia informacji o błędzie (na przykład sieciowym) przez serwer, mechanizm cache może zarówno zwrócić komunikat błędu jak i użyć ostatnio zachowanej wartości, aby chwilowo ukryć wystąpienie błędu.
Metoda HEAD także pozwala sprawdzić aktualność danych w cache, jednak nie potrafi ona zaktualizować stanu obiektu (ponieważ nie jest on przesyłany), więc zostanie on pobrany dopiero, gdy wykonamy zapytanie GET.
W przypadku poprawnego wykonania metod nie oznaczonych jako bezpieczne (PUT, POST, DELETE) konieczna jest dezaktualizacja obiektów w cache posiadających ten sam adres i host.