Sprawdzanie aktualności rekordu

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.