I read RFC 7232, which describes the Last-Modified time as below:
A Last-Modified time, when used as a validator in a request, is implicitly weak unless it is possible to deduce that it is strong, using the following rules:
The validator is about to be used by a client in an If-Modified-Since, If-Unmodified-Since, or If-Range header field, because the client has a cache entry for the associated representation, and
That cache entry includes a Date value, which gives the time when the origin server sent the original response, and
The presented Last-Modified time is at least 60 seconds before the Date value.
My question is, "Why can those three conditions that Last-Modified support mean it can be strong validator?"
The section you quoted goes on to say:
Say that we have two representations of a resource, A being the older version and B being the newer version. If they were both modified in the same second then they could both be served with the same
Last-Modifiedtime. So if all we have to go on is theLast-Modifiedheader we don't know whether the representation is A or B. That's what makesLast-Modifieda weak validator.But let's say the cache entry also has an associated
Datefield, and that it's later thanLast-Modified. We can now safely assume that the cache entry is B, the version that was current as of theDatetime. Since we now know which version is represented by the cache entry we can treatLast-Modifiedas a strong validator.(Note that the most recent standards use 1 second instead of 60.)