If-Modified-Since
If-Modified-Since makes a GET or HEAD request conditional on the selected representation having been modified more recently than the date supplied in the field value.
Technique Definition
If-Modified-Since makes a GET or HEAD request conditional on the selected representation having been modified more recently than the date supplied in the field value. Under Existence Oracle analysis, it is the date-validator variant of validator elicitation.
Primary Headers / Methods
Request Header
If-Modified-Since
Representation Metadata It Relies On
Last-Modified
Primary Method Context
GETHEAD
Method Limitation
- This technique is defined for
GETandHEAD, not as a general cross-method precondition trigger.
Can Elicit
Primary Differential
304 vs 404
Secondary / Adjacent Outcomes
200 vs 404when the representation has been modified more recently than the supplied date- No primary
412branch here; unlike broader precondition techniques, this header is not the clean route to412 vs 404
Stage Role
Under this taxonomy, If-Modified-Since is a secondary validator-based trigger for 304 vs 404, weaker and less canonical than If-None-Match.
Best Use
If-Modified-Since is best used when the target exposes modification dates and the goal is to test date-based representation evaluation rather than ETag-based validator evaluation.
It is most useful when:
ETagis absent or unstable- the server still exposes a meaningful
Last-Modifiedvalue - you want to confirm that date-based conditional retrieval itself creates the existence signal
Why It Works as an Existence Trigger
If the selected representation has not been modified since the supplied date, the server can avoid transferring the representation and return 304 Not Modified. That outcome only makes sense if the server located an existing representation and evaluated its modification date. A nonexistent target instead bottoms out at 404 Not Found.
Method Applicability
GET
- Primary method for this technique.
- Cleanest date-based path to
304 vs 404.
HEAD
- Also primary.
- Same conditional logic, without transferring a response body.
- Important because it preserves the validator-oracle even when body-based differences are removed.
Other Methods
- Not the intended method context for this technique.
- This is one of the main reasons
If-Modified-Sinceshould stay clearly separate from broader precondition techniques.
Trigger Strength / Normative Level
Weaker Normative Core Than If-None-Match
When an origin server evaluates an If-Modified-Since condition and it evaluates false, the RFC uses SHOULD language for not performing the method and generating 304 Not Modified, rather than the stronger MUST language used for If-None-Match.
Practical Result
This still gives the technique a real RFC-defined basis, but the normative footing is weaker. That matters for portability: If-Modified-Since is a valid elicitation technique, but not the strongest canonical one.
Portability Notes
- This technique is weaker than
If-None-Matchbecause it depends on date comparison rather than entity-tag comparison. - A recipient MUST ignore
If-Modified-Sinceif the request also containsIf-None-Match, so this technique should be tested in isolation. - Portability depends on the server exposing and honoring meaningful
Last-Modifiedinformation. - Date validators are coarser than entity tags; timestamp granularity can make borderline cases ambiguous.
- Rapid same-second modifications, synthetic timestamps, or missing
Last-Modifiedbehavior can reduce reliability.
Detection Notes
- Establish a known-existing target and a known-nonexistent target.
- Send the same
GETorHEADrequest to both. - Add only one manipulator:
If-Modified-Sincewith a date chosen to make an unmodified existing representation likely. - Compare outcomes.
- A
304on the existing target and404on the nonexistent target confirms the oracle for this technique.
Relationship to If-None-Match
If-Modified-Since should not be treated as an equal-strength twin of If-None-Match.
Key differences:
If-None-Matchis the stronger and more precise validator mechanism.If-Modified-Sinceis explicitly ignored whenIf-None-Matchis also present.If-Modified-Sinceis therefore better treated as the fallback or secondary validator technique, not the primary one.
Scope & Limitations
- It does not prove that a shared cache is present.
- It does not prove that a prior response was stored.
- It does not prove anything about freshness lifetime, cache keying, or cache hits.
- It only shows that date-based conditional evaluation reached an existing representation.
If-None-Match
If-None-Match makes a request conditional on the recipient not finding a current representation whose entity tag matches the supplied validator.
Precondition Elicitation
Precondition elicitation techniques use state-protection conditional headers to force the server into precondition evaluation paths that diverge based on target existence.