Zapytania warunkowe oparte na sumach kontrolnych

Zapytania warunkowe oparte na sumach kontrolnych

W tym przypadku stawiane warunki są oparte na pewnym kluczu dla zasobu. Powinien on być silnym walidatorem, a więc zmieniać się za każdym razem, gdy zasób ulegnie zmianie.

Definiuje się go za pomocą nagłówka ETag:

Response
Cache-Control:public, max-age=31536000
ETag: "15f0fff99ed5aae4edffdd6496d7131f"

Gdy klient chce ponownie pobrać dany zasób, informuje serwer o ETagu aktualnie przechowywanym w cache’u. Gdy ten się zmieni należy ponownie przesłać treść zasobu.

Request
If-None-Match: "15f0fff99ed5aae4edffdd6496d7131f"

W tym przypadku istnieją 3 użyteczne nagłówki:

  • If-Match – używane do warunkowego wykonywania zapytań modyfikujących dane dla upewnienia się, że rekord się nie zmienił,
  • If-None-Match – używane do warunkowego pobierania zasobu, gdy przechowujemy go już w cache (patrz przykład wyżej),
  • If-Range – pozwala pobrać pewien zakres zasobu (w połączeniu z nagłówkiem Range), jednak tylko gdy jego przechowywana wersja jest nadal aktualna. Ten nagówkek współpracuje zarówno z datą jak i ETagiem.