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.